0371 - Numarare
Sursa: [1]
Cerinţa[edit | edit source]
Se citesc n numere naturale. Determinați câte perechi de numere citite consecutiv au aceeași sumă a cifrelor.
Date de intrare[edit | edit source]
Programul citește de la tastatură un număr natural, iar apoi acel numar de numere naturale.
Date de ieșire[edit | edit source]
Programul afișează pe ecran numărul de perechi de numere citite consecutiv care au aceeași sumă a cifrelor.
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 100
- cele n numere citite vor avea cel mult 9 cifre
Exemplu[edit | edit source]
- Intrare
- 5
- 176 293 52421 91 424
- Ieșire
- 3
Explicație[edit | edit source]
Cele 3 perechi sunt: 176 293, 293 52421, 91 424.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_nr_de_numere():
while True: try: nr_de_numere = int(input("Introduceti numarul de numere: ")) if nr_de_numere < 1 or nr_de_numere > 100: raise ValueError("Numarul de numere trebuie sa fie intre 1 si 100.") return nr_de_numere except ValueError as e: print(e) print("Introduceti un numar valid intre 1 si 100.")
def valideaza_numar(num):
if num < 0 or num > 999999999: raise ValueError("Fiecare numar trebuie sa fie un numar natural cu cel mult 9 cifre.")
def citeste_lista_numere(nr_de_numere):
numere = [] for i in range(nr_de_numere): while True: try: num = int(input("Introduceti numarul {}: ".format(i + 1))) valideaza_numar(num) numere.append(num) break except ValueError as e: print(e) print("Introduceti un numar valid pentru numarul {}: ".format(i + 1)) return numere
def numara_perechi_cu_aceeasi_suma_cifre(numere):
pair_count = 0 for i in range(1, len(numere)): suma1 = sum(int(digit) for digit in str(numere[i - 1])) suma2 = sum(int(digit) for digit in str(numere[i])) if suma1 == suma2: pair_count += 1 return pair_count
if __name__ == '__main__':
nr_de_numere = citeste_nr_de_numere() numere = citeste_lista_numere(nr_de_numere) pair_count = numara_perechi_cu_aceeasi_suma_cifre(numere) print("Numarul de perechi de numere cu aceeasi suma a cifrelor este: {}".format(pair_count))
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
- Citim numarul de numere
nr_de_numere = int(input("Introduceti numarul de numere: "))
- Validam numarul de numere
while True:
try: if nr_de_numere < 1 or nr_de_numere > 100: raise ValueError("Numarul de numere trebuie sa fie intre 1 si 100.") break except ValueError as e: print(e) nr_de_numere = int(input("Introduceti un numar valid intre 1 si 100: "))
- Citim lista de numere
numere = [] for i in range(nr_de_numere):
num = int(input("Introduceti numarul {}: ".format(i + 1))) while True: try: if num < 0 or num > 999999999: raise ValueError("Fiecare numar trebuie sa fie un numar natural cu cel mult 9 cifre.") break except ValueError as e: print(e) num = int(input("Introduceti un numar valid pentru numarul {}: ".format(i + 1))) numere.append(num)
- Initializam un contor pentru perechile de numere cu aceeasi suma a cifrelor
pair_count = 0
- Parcurgem lista de numere si verificam perechile consecutive
for i in range(1, nr_de_numere):
# Calculam suma cifrelor primului numar din pereche suma1 = sum(int(digit) for digit in str(numere[i - 1]))
# Calculam suma cifrelor celui de-al doilea numar din pereche suma2 = sum(int(digit) for digit in str(numere[i]))
# Daca cele doua sume sunt egale, incrementam contorul if suma1 == suma2: pair_count += 1
- Afisam numarul de perechi cu aceeasi suma a cifrelor
print("Numarul de perechi de numere cu aceeasi suma a cifrelor este: {}".format(pair_count))
</syntaxhighlight>