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