2238 - Cifre 005: Difference between revisions
Am creat de la zero. |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 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. | ||
Line 26: | Line 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> |
Latest revision as of 17:50, 15 May 2023
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>