2206 - Min Impar: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dă un număr '''X'''. Să se afle cel mai mic număr '''Y ≥ X''' cu proprietatea că '''Y''' are doar cifre impare. == Date de intrare == Programul citește de la tastatură numărul '''X'''. == Date de ieșire == Dacă datele sunt introduse corect, pe ecran: "Datele sunt introduse corect.",programul va afișa pe ecran numărul '''Y'''. În cazul în care datele nu respectă restricțiile, se va afișa: "Datele nu corespund restricțiilor impuse.". == R...
 
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 16: Line 16:
; ''Ieșire''
; ''Ieșire''
:31
:31
===Exemplul 1===
===Exemplul 2===
; ''Intrare''
; ''Intrare''
:10
:10
; ''Ieșire''
; ''Ieșire''
:11
:11
===Exemplul 1===
===Exemplul 3===
; ''Intrare''
; ''Intrare''
:-2
:-2
Line 49: Line 49:




x = int(input("Introduceți numărul X: "))
if __name__ == '__main__':
if not validare_date(x):
    x = int(input("Introduceți numărul X: "))
    print("Datele nu corespund restricțiilor impuse.")
    if not validare_date(x):
    exit()
        print("Datele nu corespund restricțiilor impuse.")
print("Datele sunt introduse corect.")
        exit()
y = gaseste_numar_imp(x)
    print("Datele sunt introduse corect.")
print(y)
    y = gaseste_numar_imp(x)
    print(y)




Line 61: Line 62:




</syntaxhighlight>


==Explicatie==
Funcția validare_date(x: int) -> bool: Această funcție verifică dacă numărul x primit ca argument se încadrează în intervalul [1, 10^18] și returnează True dacă acesta este valid și False altfel. Astfel, această funcție este folosită pentru a valida datele de intrare înainte de a executa funcția gaseste_numar_imp.


Funcția gaseste_numar_imp(x: int) -> int: Această funcție primește un număr x și începe să-l mărească treptat până când găsește cel mai mic număr Y care are doar cifre impare și Y este mai mare sau egal cu X. În fiecare iterație, funcția verifică dacă toate cifrele numărului curent sunt impare. Dacă este așa, atunci funcția returnează numărul curent, altfel continuă să-l mărească pe x cu o unitate și să reia verificarea.


</syntaxhighlight>
Blocul if __name__ == '__main__':: Acest bloc verifică dacă acest script este rulat direct ca fișier executabil sau a fost importat în alt modul Python. În cazul în care acesta este rulat direct, atunci se solicită utilizatorului să introducă un număr întreg x și se validează acest număr folosind funcția validare_date. Dacă numărul este valid, atunci se calculează cel mai mic număr Y care are doar cifre impare și este mai mare sau egal cu X, folosind funcția gaseste_numar_imp. În cele din urmă, numărul Y este afișat pe ecran.

Latest revision as of 16:46, 29 April 2023

Cerinţa[edit | edit source]

Se dă un număr X. Să se afle cel mai mic număr Y ≥ X cu proprietatea că Y are doar cifre impare.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul X.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran: "Datele sunt introduse corect.",programul va afișa pe ecran numărul Y. În cazul în care datele nu respectă restricțiile, se va afișa: "Datele nu corespund restricțiilor impuse.".

Restricţii şi precizări[edit | edit source]

  • 1 ≤ X ≤ 10^18


Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
22
Ieșire
31

Exemplul 2[edit | edit source]

Intrare
10
Ieșire
11

Exemplul 3[edit | edit source]

Intrare
-2
Ieșire
Datele nu corespund restricțiilor impuse.



Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1">

  1. 2206 - Min Impar

def validare_date(x: int) -> bool:

   """
   Verifică dacă datele de intrare sunt valide conform cerințelor.
   """
   return 1 <= x <= 10 ** 18


def gaseste_numar_imp(x: int) -> int:

   """
   Găsește cel mai mic număr Y ≥ X cu proprietatea că Y are doar cifre impare.
   """
   while True:
       if all(int(d) % 2 == 1 for d in str(x)):
           return x
       x += 1


if __name__ == '__main__':

   x = int(input("Introduceți numărul X: "))
   if not validare_date(x):
       print("Datele nu corespund restricțiilor impuse.")
       exit()
   print("Datele sunt introduse corect.")
   y = gaseste_numar_imp(x)
   print(y)



</syntaxhighlight>

Explicatie[edit | edit source]

Funcția validare_date(x: int) -> bool: Această funcție verifică dacă numărul x primit ca argument se încadrează în intervalul [1, 10^18] și returnează True dacă acesta este valid și False altfel. Astfel, această funcție este folosită pentru a valida datele de intrare înainte de a executa funcția gaseste_numar_imp.

Funcția gaseste_numar_imp(x: int) -> int: Această funcție primește un număr x și începe să-l mărească treptat până când găsește cel mai mic număr Y care are doar cifre impare și Y este mai mare sau egal cu X. În fiecare iterație, funcția verifică dacă toate cifrele numărului curent sunt impare. Dacă este așa, atunci funcția returnează numărul curent, altfel continuă să-l mărească pe x cu o unitate și să reia verificarea.

Blocul if __name__ == '__main__':: Acest bloc verifică dacă acest script este rulat direct ca fișier executabil sau a fost importat în alt modul Python. În cazul în care acesta este rulat direct, atunci se solicită utilizatorului să introducă un număr întreg x și se validează acest număr folosind funcția validare_date. Dacă numărul este valid, atunci se calculează cel mai mic număr Y care are doar cifre impare și este mai mare sau egal cu X, folosind funcția gaseste_numar_imp. În cele din urmă, numărul Y este afișat pe ecran.