0366 - Cifre 3: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
No edit summary
 
Line 1: Line 1:
sursa: [https://www.pbinfo.ro/probleme/366/cifre3]
== Cerinţa ==
== Cerinţa ==
Se citește un număr natural. Să se afișeze, în ordine crescătoare, numerele naturale mai mici decât numarul dat cu proprietatea că pătratul și cubul lor nu au cifre comune.
Se citește un număr natural. Să se afișeze, în ordine crescătoare, numerele naturale mai mici decât numarul dat cu proprietatea că pătratul și cubul lor nu au cifre comune.
Line 22: Line 23:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


try:
def validare():
    n = int(input("Introduceți un număr natural: "))  # citim numarul de la tastatura
    try:
    if n < 1 or n > 1000:  # verificam daca numarul este valid
        n = int(input("Introduceți un număr natural: "))  # citim numarul de la tastatura
        raise ValueError("Datele introduse sunt invalide. Numărul trebuie să fie între 1 și 1000.")
        if n < 1 or n > 1000:  # verificam daca numarul este valid
except ValueError as error:
            raise ValueError("Datele introduse sunt invalide. Numărul trebuie să fie între 1 și 1000.")
    print(error)
        return n
else:
    except ValueError as eroare:
     numere_fara_cifre_comune = [] # lista in care vom adauga numerele cerute
        print(eroare)
        return None
 
def gaseste_numere_fara_cifre_comune(n):
     numere_fara_cifre_comune = []
     for i in range(1, n):
     for i in range(1, n):
         patrat = i ** 2
         patrat = i ** 2
Line 37: Line 42:
         if cifre_patrat.isdisjoint(cifre_cub):  # verificam daca cele doua seturi sunt disjuncte
         if cifre_patrat.isdisjoint(cifre_cub):  # verificam daca cele doua seturi sunt disjuncte
             numere_fara_cifre_comune.append(i)  # daca da, adaugam numarul in lista
             numere_fara_cifre_comune.append(i)  # daca da, adaugam numarul in lista
     print(*numere_fara_cifre_comune)  # afisam toate numerele din lista
     return numere_fara_cifre_comune
    print("Datele introduse corespund conditiilor impuse.")
 
if __name__ == '__main__':
    n = validare()  # obtinem un numar valid
    if n is not None:
        numere_fara_cifre_comune = gaseste_numere_fara_cifre_comune(n)  # gasim numerele fara cifre comune
        print(*numere_fara_cifre_comune)  # afisam numerele din lista
        print("Datele introduse corespund condițiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 00:43, 16 May 2023

sursa: [1]

Cerinţa[edit | edit source]

Se citește un număr natural. Să se afișeze, în ordine crescătoare, numerele naturale mai mici decât numarul dat cu proprietatea că pătratul și cubul lor nu au cifre comune.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul.

Date de ieşire[edit | edit source]

Programul afișează pe ecran numerele cerute, în ordine crescătoare, separate prin exact un spațiu.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000

Exemplu[edit | edit source]

Intrare
20
Ieșire
Datele introduse corespund restricțiilor impuse.
2 3 8 9 14

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

def validare():

   try:
       n = int(input("Introduceți un număr natural: "))  # citim numarul de la tastatura
       if n < 1 or n > 1000:  # verificam daca numarul este valid
           raise ValueError("Datele introduse sunt invalide. Numărul trebuie să fie între 1 și 1000.")
       return n
   except ValueError as eroare:
       print(eroare)
       return None

def gaseste_numere_fara_cifre_comune(n):

   numere_fara_cifre_comune = []
   for i in range(1, n):
       patrat = i ** 2
       cub = i ** 3
       cifre_patrat = set(str(patrat))  # transformam cifrele patratului in set
       cifre_cub = set(str(cub))  # transformam cifrele cubului in set
       if cifre_patrat.isdisjoint(cifre_cub):  # verificam daca cele doua seturi sunt disjuncte
           numere_fara_cifre_comune.append(i)  # daca da, adaugam numarul in lista
   return numere_fara_cifre_comune

if __name__ == '__main__':

   n = validare()  # obtinem un numar valid
   if n is not None:
       numere_fara_cifre_comune = gaseste_numere_fara_cifre_comune(n)  # gasim numerele fara cifre comune
       print(*numere_fara_cifre_comune)  # afisam numerele din lista
       print("Datele introduse corespund condițiilor impuse.")

</syntaxhighlight>