3807 - Sume Gauss De Sume Gauss
Sursa: [1]
Cerinţa[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire[edit | edit source]
Dacă datele de intrare sunt corecte, se va afișa "Datele introduse corespund cerintelor." apoi pe un rând nou va afișa cele n sume calculate. În caz contrar programul va afișa mesajul "Datele introduse nu corespund cerintelor."
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 1.000.000
- cele n numere citite vor fi mai mici decât 4.000.000
Exemplul 1[edit | edit source]
- Intrare
- 5
- 5 3 2 10 7
- Ieșire
- Datele introduse corespund cerintelor.
- 35 10 4 220 84
Exemplul 2[edit | edit source]
- Intrare
- 0
- Ieșire
- Datele introduse nu corespund cerintelor.
Rezolvare[edit | edit source]
<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("Datele introduse nu corespund cerintelor.") exit()
inputs = []
for i in range(n): x = int(input(f"Introduceti valoarea {i+1}: ")) if validate_x(x) is not True: print("Datele introduse nu corespund cerintelor.") exit()
inputs.append(x)
print("Datele introduse corespund cerintelor.")
for x in inputs: print(total_sum(x))
</syntaxhighlight>
Explicatie rezolvare[edit | edit source]
Acest program calculează suma tuturor numerelor de la 1 la x, apoi suma tuturor sumelor parțiale de la 1 la x și afișează această ultimă sumă pentru fiecare valoare introdusă de la tastatură.
Funcția partial_sum(x) calculează suma numerelor de la 1 la x. Funcția total_sum(x) calculează suma tuturor sumelor parțiale de la 1 la x.
Funcția validate_n(n) verifică dacă numărul de teste (n) este între 1 și 1.000.000, în timp ce funcția validate_x(x) verifică dacă numărul x este mai mic sau egal cu 4.000.000.
În funcția principală, utilizatorul este întâi rugat să introducă numărul de teste (n). Apoi, pentru fiecare test, este cerut utilizatorului să introducă o valoare x. Înainte de a fi afișată suma, se efectuează verificări asupra valorilor introduse pentru a se asigura că respectă cerințele programului.