3807 - Sume Gauss De Sume Gauss
Sursa: [1]
Cerinţa
Se dau n numere naturale. Pentru fiecare numar x, calculati 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...x).
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire
Acest program primește un număr întreg n de teste și pentru fiecare test primește un număr întreg x. Programul calculează suma tuturor sumelor parțiale pentru numerele întregi cuprinse între 1 și x, iar apoi afișează această sumă. Funcția "partial_sum" calculează suma parțială pentru un singur număr întreg x, iar funcția "total_sum" calculează suma tuturor sumelor parțiale pentru numerele întregi cuprinse între 1 și x. Funcțiile "validate_n" și "validate_x" verifică dacă n și x respectă anumite condiții, respectiv dacă sunt în intervalul specificat. Dacă n sau x nu respectă condițiile, programul afișează un mesaj de eroare și se oprește. În final, programul afișează suma tuturor sumelor parțiale pentru fiecare test introdus.
Restricţii şi precizări
- 1 ⩽ n ⩽ 1.000.000
- cele n numere citite vor fi mai mici decât 4.000.000
Exemplul 1
- Intrare
- 5
- 5 3 2 10 7
- Ieșire
- 35 10 4 220 84
Exemplul 2
- Intrare
- 0
- Ieșire
- Numarul de teste trebuie sa fie intre 1 si 1000000
Rezolvare
<syntaxhighlight lang="python" line>
- 3807
def partial_sum(x):
current_sum = 0 for j in range(1, x+1): current_sum += j return current_sum
def total_sum(x):
sum = 0 for j in range(1, x+1): sum += partial_sum(j) return sum
def validate_n(n):
return 1 <= n <= 1000000
def validate_x(x):
return x <= 4000000
if __name__ == "__main__":
n = int(input("Introduceti numarul de teste: ")) if validate_n(n) is not True: print("Numarul de teste trebuie sa fie intre 1 si 1000000") exit()
for i in range(n): x = int(input(f"Introduceti valoarea {i+1}: ")) if validate_x(x) is not True: print("Numarul introdus trebuie sa fie mai mic decat 4000000") exit() print(total_sum(x))
</syntaxhighlight>