1981 - Divizori sir: Difference between revisions
No edit summary |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 19: | Line 19: | ||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intrare | ; Intrare | ||
: | : -1 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse nu corespund restricțiilor impuse. | : Datele introduse nu corespund restricțiilor impuse. | ||
Line 32: | Line 32: | ||
def verificare_restrictii(n1): | def verificare_restrictii(n1): | ||
# functia de verificare a datelor de intrare | # functia de verificare a datelor de intrare | ||
if | if 0 < n1 < 60: | ||
return True | return True | ||
else: | else: |
Latest revision as of 13:16, 16 November 2023
Cerinţa[edit | edit source]
Se dă următorul șir de numere naturale:
1, 3, 9, 25, 65, 161, 385, 897, 2049, 4609, 10241, 22529, 49153, 106497…
Pentru un număr natural n, citit de la tastatură, afișati numărul de divizori pentru fiecare dintre primii n termeni ai șirului.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n;
Date de ieşire[edit | edit source]
Programul va afișa pe ecran cele n numere, reprezentând numărul de divizori ai fiecarui numar dintre cele n, separate prin spații.
Restricții și precizări[edit | edit source]
- 0 < n < 60
Exemplul 1[edit | edit source]
- Intrare
- 4
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 1 2 3 3
Exemplul 2[edit | edit source]
- Intrare
- -1
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
Explicație[edit | edit source]
- 1 are un divizor,
- 3 are 2 divizori,
- 9 are 3 divizori,
- 25 are 3 divizori.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 1981 - Divizori sir
def verificare_restrictii(n1):
# functia de verificare a datelor de intrare if 0 < n1 < 60: return True else: return False
def numar_divizori(n1):
# Initializam sirul de numere sir = [2, 4] # Generam primii n termeni ai sirului for i in range(2, n1): sir.append(2 * sir[i - 1] + 2 * sir[i - 2]) # Calculam numarul de divizori pentru fiecare termen al sirului divizori = [len(set(i for i in range(1, int(x**0.5) + 1) if x % i == 0)) for x in sir] return divizori
if __name__ == "__main__":
try: # Citim datele de intrare n = int(input()) if verificare_restrictii(n): # verificam datele de intrare print("Datele de intrare corespund restrictiilor impuse.") # Calculam numarul de divizori rezultat = numar_divizori(n) # Afisam rezultatul print(' '.join(map(str, rezultat))) else: print("Datele de intrare nu corespund restrictiilor impuse.") # ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator except ValueError: print("Datele de intrare nu corespund restrictiilor impuse.") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>