3807 - Sume Gauss De Sume Gauss: Difference between revisions
Dragos1234 (talk | contribs) No edit summary |
Dragos1234 (talk | contribs) |
||
Line 7: | Line 7: | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul | 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 == | == Restricţii şi precizări == |
Revision as of 18:29, 19 March 2023
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):
if not 1 <= n <= 1000000: print("Numarul de teste trebuie sa fie intre 1 si 1000000") raise ValueError
def validate_x(x):
if x >= 4000000: print("Numarul introdus trebuie sa fie mai mic decat 4000000") raise ValueError
if __name__ == "__main__":
n = int(input("Introduceti numarul de teste: ")) validate_n(n)
for i in range(n): x = int(input(f"Introduceti valoarea {i+1}: ")) validate_x(x) print(total_sum(x))
</syntaxhighlight>