3933 - Zero Unu

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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.")