0367 - Eliminare Cifre
Sursa: [1]
Cerinţa[edit | edit source]
Se dau un numar de numere naturale. Calculaţi suma numerelor obținute prin eliminarea din fiecare număr dat a tuturor aparițiilor ultimei cifre.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul, iar apoi acel numar de numere naturale, scrise pe randuri diferite.
Date de ieșire[edit | edit source]
Programul afișează pe ecran suma.
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 1000
- numerele citite vor avea cel mult 6 cifre
Exemplu[edit | edit source]
- Intrare
- 5
- 27 1131 4 546 112
- Ieșire
- 70
Explicație[edit | edit source]
În urma eliminării aparițiilor ultimei cifre, numerele devin: 2 3 0 54 11. Suma lor este 70.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_nr_numere():
nr_de_numere = int(input("Introduceți numărul de numere: ")) while nr_de_numere < 1 or nr_de_numere > 1000: nr_de_numere = int(input("Numărul introdus nu este valid. Introduceți un număr între 1 și 1000: ")) return nr_de_numere
def citeste_numar(index):
numar = int(input(f"Introduceți numărul {index}: ")) while numar < 0 or numar > 999999: numar = int(input("Numărul introdus nu este valid. Introduceți un număr mai mic sau egal cu 999999: ")) return numar
def obtine_ultima_cifra(numar):
return numar % 10
def elimina_aparitii_ultima_cifra(numar, ultima_cifra):
numar_fara_ultima_cifra = 0 putere = 1 while numar > 0: cifra = numar % 10 numar //= 10 if cifra != ultima_cifra: numar_fara_ultima_cifra += cifra * putere putere *= 10 return numar_fara_ultima_cifra
def calculeaza_suma(nr_de_numere):
suma = 0 for i in range(nr_de_numere): numar = citeste_numar(i + 1) ultima_cifra = obtine_ultima_cifra(numar) numar_fara_ultima_cifra = elimina_aparitii_ultima_cifra(numar, ultima_cifra) suma += numar_fara_ultima_cifra return suma
if __name__ == '__main__':
nr_de_numere = citeste_nr_numere() suma = calculeaza_suma(nr_de_numere) print("Datele au fost introduse corect.") print("Suma numerelor obținute prin eliminarea aparițiilor ultimei cifre din fiecare număr este:", suma)
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
- citim numarul de numere n si verificam daca se incadreaza in limitele impuse
nr_de_numere = int(input("Introduceti numarul de numere: ")) while nr_de_numere < 1 or nr_de_numere > 1000:
nr_de_numere = int(input("Numarul introdus nu este valid. Introduceti un numar intre 1 si 1000: "))
- initializam variabila suma cu 0
suma = 0
- iteram prin cele n numere
for i in range(nr_de_numere):
# citim numarul si verificam daca se incadreaza in limitele impuse numar = int(input("Introduceti numarul " + str(i + 1) + ": ")) while numar < 0 or numar > 999999: numar = int(input("Numarul introdus nu este valid. Introduceti un numar mai mic sau egal cu 999999: "))
# obtinem ultima cifra a numarului ultima_cifra = numar % 10
# eliminam toate aparitiile ultimei cifre din numar numar_fara_ultima_cifra = 0 putere = 1 while numar > 0: cifra = numar % 10 numar //= 10 if cifra != ultima_cifra: numar_fara_ultima_cifra += cifra * putere putere *= 10
# adaugam numarul fara ultima cifra la suma totala suma += numar_fara_ultima_cifra
- afisam suma totala
print("Datele au fost introduse corect.") print("Suma numerelor obtinute prin eliminarea aparitiilor ultimei cifre din fiecare numar este:", suma)
</syntaxhighlight>