3933 - Zero Unu: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/3933/zero-unu] | |||
== Cerinţa == | == Cerinţa == | ||
Se dă un număr natural. Să se verifice dacă numărul conține cel puțin o cifră de 1, cel puțin o cifră 0 și nu conține alte cifre. | Se dă un număr natural. Să se verifice dacă numărul conține cel puțin o cifră de 1, cel puțin o cifră 0 și nu conține alte cifre. | ||
Line 15: | Line 16: | ||
: 11011 | : 11011 | ||
; Ieșire | ; Ieșire | ||
: | : Numărul îndeplinește condițiile date. | ||
== Exemplu 2 == | == Exemplu 2 == | ||
Line 21: | Line 22: | ||
: 161011 | : 161011 | ||
; Ieșire | ; Ieșire | ||
: nu | : Numărul nu îndeplinește condițiile date. | ||
== Exemplu 3 == | == Exemplu 3 == | ||
Line 27: | Line 28: | ||
: 111 | : 111 | ||
; Ieșire | ; Ieșire | ||
: nu | : Numărul nu îndeplinește condițiile date. | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def verifica_numar(numar): | |||
# Verifică dacă numărul îndeplinește condițiile cerute | |||
has_zero = False | |||
has_one = False | |||
while numar > 0: | |||
digit = numar % 10 | |||
if digit == 0: | |||
has_zero = True | |||
elif digit == 1: | |||
has_one = True | |||
else: | |||
# Dacă cifra curentă nu este 0 sau 1, nu mai e necesar să verificăm restul cifrelor | |||
break | |||
numar //= 10 | |||
return has_zero and has_one and numar == 0 | |||
def main(): | |||
# Citim numărul de la utilizator | |||
numar = int(input("Introduceți un număr natural: ")) | |||
# Verificăm dacă numărul este un număr natural și conține doar cifre | |||
if numar < 0 or not str(numar).isdigit(): | |||
print("Numărul introdus nu este valid.") | |||
else: | |||
if verifica_numar(numar): | |||
# Numărul îndeplinește condițiile cerute | |||
print("Numărul îndeplinește condițiile date.") | |||
else: | |||
# Numărul nu îndeplinește condițiile cerute | |||
print("Numărul nu îndeplinește condițiile date.") | |||
print("Datele au fost introduse corect.") | |||
if __name__ == "__main__": | |||
main() | |||
</syntaxhighlight> | |||
=== Rezolvare ver. 2 === | |||
<syntaxhighlight lang="python" line> | |||
# Citim numarul de la utilizator | # Citim numarul de la utilizator | ||
numar = int(input("Introduceti un numar natural: ")) | numar = int(input("Introduceti un numar natural: ")) |
Latest revision as of 10:23, 15 May 2023
Sursa: [1]
Cerinţa[edit | edit source]
Se dă un număr natural. Să se verifice dacă numărul conține cel puțin o cifră de 1, cel puțin o cifră 0 și nu conține alte cifre.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran mesajul da dacă numar conține numai cifre de 0 și 1 (cel puțin una din fiecare), sau nu în caz contrar.
Restricții și precizări[edit | edit source]
- 0 ≤ numar ≤ 2.000.000.000
Exemplu 1[edit | edit source]
- Intrare
- 11011
- Ieșire
- Numărul îndeplinește condițiile date.
Exemplu 2[edit | edit source]
- Intrare
- 161011
- Ieșire
- Numărul nu îndeplinește condițiile date.
Exemplu 3[edit | edit source]
- Intrare
- 111
- Ieșire
- Numărul nu îndeplinește condițiile date.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def verifica_numar(numar):
# Verifică dacă numărul îndeplinește condițiile cerute has_zero = False has_one = False
while numar > 0: digit = numar % 10 if digit == 0: has_zero = True elif digit == 1: has_one = True else: # Dacă cifra curentă nu este 0 sau 1, nu mai e necesar să verificăm restul cifrelor break numar //= 10
return has_zero and has_one and numar == 0
def main():
# Citim numărul de la utilizator numar = int(input("Introduceți un număr natural: "))
# Verificăm dacă numărul este un număr natural și conține doar cifre if numar < 0 or not str(numar).isdigit(): print("Numărul introdus nu este valid.") else: if verifica_numar(numar): # Numărul îndeplinește condițiile cerute print("Numărul îndeplinește condițiile date.") else: # Numărul nu îndeplinește condițiile cerute print("Numărul nu îndeplinește condițiile date.") print("Datele au fost introduse corect.")
if __name__ == "__main__":
main()
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
- Citim numarul de la utilizator
numar = int(input("Introduceti un numar natural: "))
- Verificam daca numarul este un numar natural si contine doar cifre
if numar < 0 or not str(numar).isdigit():
print("Numarul introdus nu este valid.")
else:
# Inițializăm două variabile pentru a verifica dacă n conține cifrele 0 și 1 has_zero = False has_one = False
# Parcurgem cifrele numarului, verificand daca exista cifrele 0 si 1 si nicio alta cifra while numar > 0: digit = numar % 10 # extragem cifra curenta if digit == 0: has_zero = True elif digit == 1: has_one = True else: # Daca cifra curenta nu este 0 sau 1, nu mai e necesar sa verificam restul cifrelor break numar //= 10 # eliminam ultima cifra din n
# Verificam daca numar indeplineste conditiile cerute if has_zero and has_one and numar == 0: print("Numarul indeplineste conditiile date.") else: print("Numarul nu indeplineste conditiile date.")
</syntaxhighlight>