2238 - Cifre 005

From Bitnami MediaWiki
Revision as of 17:50, 15 May 2023 by Petras.du.ioana (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

<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>