1903 - V Terminal: Diferență între versiuni
De la Universitas MediaWiki
(Pagină nouă: == Cerința == Andrei a făcut într-o zi un șir de N numere. În a doua zi a lăsat în acel șir doar numerele prime. În a treia zi a calculat pentru fiecare număr rămas în șir suma cifrelor, iar apoi a adunat toate aceste sume în S. După ce a obținut numărul S a început să adune toate cifrele din care este format S și tot așa până când ajunge la o cifră terminală C. ;Ajutați-l pe Andrei să calculeze cifra terminală C. == Date de intrare == Fișierul...) |
Fără descriere a modificării |
||
Linia 4: | Linia 4: | ||
== Date de intrare == | == Date de intrare == | ||
Fișierul de intrare | Fișierul de intrare vterminalin.txt conține pe prima linie numărul N, iar pe a doua linie N numere naturale separate prin spații. | ||
== Date de ieșire == | == Date de ieșire == | ||
Fișierul de ieșire | Fișierul de ieșire vterminalout.txt va conține pe prima linie numărul C, reprezentând valoarea cerută. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
Linia 15: | Linia 15: | ||
== Exemplu 1 == | == Exemplu 1 == | ||
; Intrare | ; Intrare | ||
; | ; vterminalin.txt | ||
: 5 | : 5 | ||
: 4 11 24 13 97 | : 4 11 24 13 97 | ||
; Ieșire | ; Ieșire | ||
; | ; vterminalout.txt | ||
: 4 | : 4 | ||
<br> | <br> | ||
== Exemplu 2 == | == Exemplu 2 == | ||
; Intrare | ; Intrare | ||
; | ; vterminalin.txt | ||
: 105 | : 105 | ||
: 4 11 24 13 97 | : 4 11 24 13 97 | ||
Linia 54: | Linia 54: | ||
def main(): | def main(): | ||
try: | try: | ||
with open(" | with open("vterminalin.txt", "r") as fisier: | ||
n = int(fisier.readline().strip()) | n = int(fisier.readline().strip()) | ||
numere = list(map(int, fisier.readline().split())) | numere = list(map(int, fisier.readline().split())) | ||
Linia 69: | Linia 69: | ||
rezultat = cifra_terminala(suma_cifrelor_prime) | rezultat = cifra_terminala(suma_cifrelor_prime) | ||
with open(" | with open("vterminalout.txt", "w") as fisier_out: | ||
fisier_out.write(str(rezultat)) | fisier_out.write(str(rezultat)) | ||
Versiunea de la data 1 decembrie 2023 17:13
Cerința
Andrei a făcut într-o zi un șir de N numere. În a doua zi a lăsat în acel șir doar numerele prime. În a treia zi a calculat pentru fiecare număr rămas în șir suma cifrelor, iar apoi a adunat toate aceste sume în S. După ce a obținut numărul S a început să adune toate cifrele din care este format S și tot așa până când ajunge la o cifră terminală C.
- Ajutați-l pe Andrei să calculeze cifra terminală C.
Date de intrare
Fișierul de intrare vterminalin.txt conține pe prima linie numărul N, iar pe a doua linie N numere naturale separate prin spații.
Date de ieșire
Fișierul de ieșire vterminalout.txt va conține pe prima linie numărul C, reprezentând valoarea cerută.
Restricții și precizări
- 1 ⩽ N ⩽ 10.000
- numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 1.000
Exemplu 1
- Intrare
- vterminalin.txt
- 5
- 4 11 24 13 97
- Ieșire
- vterminalout.txt
- 4
Exemplu 2
- Intrare
- vterminalin.txt
- 105
- 4 11 24 13 97
- Ieșire
- Eroare: Numărul N trebuie să fie între 1 și 100
Rezolvare
#1903 - V Terminal
def este_prim(numar):
if numar < 2:
return False
for i in range(2, int(numar ** 0.5) + 1):
if numar % i == 0:
return False
return True
def suma_cifrelor(numar):
return sum(int(cifra) for cifra in str(numar))
def cifra_terminala(numar):
while numar >= 10:
numar = suma_cifrelor(numar)
return numar
def main():
try:
with open("vterminalin.txt", "r") as fisier:
n = int(fisier.readline().strip())
numere = list(map(int, fisier.readline().split()))
if not (1 <= n <= 100):
raise ValueError("Numărul N trebuie să fie între 1 și 100")
for numar in numere:
if not (numar < 1000):
raise ValueError("Numerele trebuie să fie mai mici decât 1000")
numere_prime = [num for num in numere if este_prim(num)]
suma_cifrelor_prime = sum(suma_cifrelor(num) for num in numere_prime)
rezultat = cifra_terminala(suma_cifrelor_prime)
with open("vterminalout.txt", "w") as fisier_out:
fisier_out.write(str(rezultat))
except Exception as e:
print(f"Eroare: {str(e)}")
if __name__ == "__main__":
main()