3933 - Zero Unu: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
mNo edit summary
 
(2 intermediate revisions 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 n. Să se verifice dacă n 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.
 
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul n.
Programul citește de la tastatură numărul.
 
== Date de ieşire ==
== Date de ieşire ==
Programul va afișa pe ecran mesajul da dacă n conține numai cifre de 0 și 1 (cel puțin una din fiecare), sau nu în caz contrar.
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 ==
== Restricții și precizări ==
* 0 ≤ n ≤ 2.000.000.000
* 0 ≤ numar ≤ 2.000.000.000
 
== Exemplu 1 ==
== Exemplu 1 ==
; Intrare
; Intrare
: 11011
: 11011
; Ieșire
; Ieșire
: da
: Numărul îndeplinește condițiile date.
 
== Exemplu 2 ==
== Exemplu 2 ==
; Intrare
; Intrare
: 161011
: 161011
; Ieșire
; Ieșire
: nu
: Numărul nu îndeplinește condițiile date.
 
== Exemplu 3 ==
== Exemplu 3 ==
; Intrare
; Intrare
: 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
n = int(input("Introduceti un numar natural: "))
numar = int(input("Introduceti un numar natural: "))


# Verificam daca numarul este un numar natural si contine doar cifre
# Verificam daca numarul este un numar natural si contine doar cifre
if n < 0 or not str(n).isdigit():
if numar < 0 or not str(numar).isdigit():
     print("Numarul introdus nu este valid.")
     print("Numarul introdus nu este valid.")
else:
else:
Line 35: Line 92:
     has_one = False
     has_one = False


     # Parcurgem cifrele lui n, verificand daca exista cifrele 0 si 1 si nicio alta cifra
     # Parcurgem cifrele numarului, verificand daca exista cifrele 0 si 1 si nicio alta cifra
     while n > 0:
     while numar > 0:
         digit = n % 10  # extragem cifra curenta
         digit = numar % 10  # extragem cifra curenta
         if digit == 0:
         if digit == 0:
             has_zero = True
             has_zero = True
Line 45: Line 102:
             # Daca cifra curenta nu este 0 sau 1, nu mai e necesar sa verificam restul cifrelor
             # Daca cifra curenta nu este 0 sau 1, nu mai e necesar sa verificam restul cifrelor
             break
             break
         n //= 10  # eliminam ultima cifra din n
         numar //= 10  # eliminam ultima cifra din n


     # Verificam daca n indeplineste conditiile cerute
     # Verificam daca numar indeplineste conditiile cerute
     if has_zero and has_one and n == 0:
     if has_zero and has_one and numar == 0:
         print("Numarul indeplineste conditiile date.")
         print("Numarul indeplineste conditiile date.")
     else:
     else:

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>

  1. Citim numarul de la utilizator

numar = int(input("Introduceti un numar natural: "))

  1. 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>