2238 - Cifre 005

From Bitnami MediaWiki

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>