2238 - Cifre 005
Sursa: [1]
Cerinţa[edit | edit source]
Se da o lista numere naturale. Să se afle pentru câte dintre numere, suma cifrelor împărţită la 9 dă restul citit de la tastatura.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele lista de numere şi restul, iar apoi numerele naturale date, separate prin spații.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran numărul de numere citite pentru care suma cifrelor dă restul dat la împărţirea cu 9.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 200.000
- 0 ≤ r ≤ 8
- cele n numere citite vor fi mai mici decât 1018
Exemplu[edit | edit source]
- Intrare
- 3 2
11 200 3310
- Ieșire
- 2
Explicație[edit | edit source]
Se dă n=3 şi r=2. S-au citit 3 numere : 11 are suma cifrelor 2 şi dă restul 2 la împărţirea cu 9, 200 are suma cifrelor 2 şi dă restul 2 la împărţirea cu 9, iar 3310 are suma cifrelor 7, care dă restul 7 la împărţirea cu 9. Deci două numere au proprietatea cerută.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_numere(numar_elemente):
numere = []
for _ in range(numar_elemente): while True: try: numar = int(input("Introduceți un număr natural: ")) # Citeste un numar de la utilizator if numar <= 0: raise ValueError("Introduceți un număr natural pozitiv.") # Ridica o eroare daca numarul este mai mic sau egal cu 0 numere.append(numar) # Adauga numarul citit la lista de numere break except ValueError as e: print(f"Eroare: {e}") # Afiseaza eroarea daca numarul introdus nu este valid
return numere
def calculeaza_count(numere, rest):
count = 0 for numar in numere: suma_cifrelor = 0 while numar > 0: suma_cifrelor += numar % 10 # Calculeaza suma cifrelor numarului numar //= 10 if suma_cifrelor % 9 == rest: # Verifica daca suma cifrelor este divizibila cu 9 si are restul specificat count += 1
return count
numere = [] numar_elemente = int(input("Introduceți numărul de elemente: ")) # Citeste numarul de elemente de la utilizator rest = int(input("Introduceți restul împărțirii la 9: ")) # Citeste restul impartirii la 9 de la utilizator
for _ in range(numar_elemente):
while True: try: numar = int(input("Introduceți un număr natural: ")) # Citeste un numar de la utilizator if numar <= 0: raise ValueError("Introduceți un număr natural pozitiv.") # Ridica o eroare daca numarul este mai mic sau egal cu 0 numere.append(numar) # Adauga numarul citit la lista de numere break except ValueError as e: print(f"Eroare: {e}") # Afiseaza eroarea daca numarul introdus nu este valid
count = 0 for numar in numere:
suma_cifrelor = 0 while numar > 0: suma_cifrelor += numar % 10 # Calculeaza suma cifrelor numarului numar //= 10 if suma_cifrelor % 9 == rest: # Verifica daca suma cifrelor este divizibila cu 9 si are restul specificat count += 1
print(f"În lista dată există {count} numere cu suma cifrelor divizibilă cu 9 și cu restul {rest}.") # Afiseaza rezultatul final
</syntaxhighlight>