3933 - Zero Unu
De la Universitas MediaWiki
Sursa: [1]
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.
Date de intrare
Programul citește de la tastatură numărul.
Date de ieşire
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
- 0 ≤ numar ≤ 2.000.000.000
Exemplu 1
- Intrare
- 11011
- Ieșire
- Numărul îndeplinește condițiile date.
Exemplu 2
- Intrare
- 161011
- Ieșire
- Numărul nu îndeplinește condițiile date.
Exemplu 3
- Intrare
- 111
- Ieșire
- Numărul nu îndeplinește condițiile date.
Rezolvare
Rezolvare ver. 1
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()
Rezolvare ver. 2
# 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.")