2238 - Cifre 005: Diferență între versiuni
De la Universitas MediaWiki
(Am creat de la zero.) |
Fără descriere a modificării |
||
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator) | |||
Linia 1: | Linia 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/2238/cifre005] | |||
== Cerinţa == | == Cerinţa == | ||
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. | 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. | ||
Linia 26: | Linia 27: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
numere = [] | def citeste_numere(numar_elemente): | ||
numere = [] | |||
while True: | 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 | |||
count = 0 | |||
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> | </syntaxhighlight> |
Versiunea curentă din 15 mai 2023 17:50
Sursa: [1]
Cerinţa
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
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
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
- 1 ≤ n ≤ 200.000
- 0 ≤ r ≤ 8
- cele n numere citite vor fi mai mici decât 1018
Exemplu
- Intrare
- 3 2
11 200 3310
- Ieșire
- 2
Explicație
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
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