0366 - Cifre 3: Difference between revisions
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(): | ||
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 | |||
except ValueError as | raise ValueError("Datele introduse sunt invalide. Numărul trebuie să fie între 1 și 1000.") | ||
return n | |||
except ValueError as eroare: | |||
numere_fara_cifre_comune = [] | 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 | 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> | </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>