0367 - Eliminare Cifre: Difference between revisions
No edit summary |
|||
Line 24: | Line 24: | ||
În urma eliminării aparițiilor ultimei cifre, numerele devin: 2 3 0 54 11. Suma lor este 70. | În urma eliminării aparițiilor ultimei cifre, numerele devin: 2 3 0 54 11. Suma lor este 70. | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<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 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Line 61: | Line 109: | ||
print("Datele au fost introduse corect.") | print("Datele au fost introduse corect.") | ||
print("Suma numerelor obtinute prin eliminarea aparitiilor ultimei cifre din fiecare numar este:", suma) | print("Suma numerelor obtinute prin eliminarea aparitiilor ultimei cifre din fiecare numar este:", suma) | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 00:53, 16 May 2023
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>