1212 - Sumă Pătrare: Diferență între versiuni
De la Universitas MediaWiki
Linia 27: | Linia 27: | ||
; Ieșire | ; Ieșire | ||
: n trebuie sa fie intre 1 si 2.000.000.000. | : n trebuie sa fie intre 1 si 2.000.000.000. | ||
<br> | <br> | ||
Versiunea de la data 25 martie 2023 15:02
Sursa: [1]
Cerinţa
Fiind dat N, un număr natural nenul, calculați suma S=1^2 + 2^2 + 3^2 + ... + n^2, modulo 10.234.573.
Date de intrare
Programul citește de la tastatură numărul N.
Date de ieșire
Acest program calculează suma pătratelor numerelor de la 1 la n, apoi aplică operatorul modulo pentru a obține restul împărțirii sumei la 10234573. Datele de ieșire ale programului sunt următoarele:
Dacă inputul n este mai mic decât 1 sau mai mare decât 2.000.000.000, se va afișa un mesaj de eroare, iar programul se va încheia. În caz contrar, programul va calcula suma pătratelor numerelor de la 1 la n, aplicând operatorul modulo 10234573 și va afișa rezultatul.
Restricţii şi precizări
- 1 ⩽ N ⩽ 2.000.000.000
Exemplul 1
- Intrare
- Introduceti numarul n: 4
- Ieșire
- Rezultatul este: 30
Exemplul 2
- Intrare
- 0
- Ieșire
- n trebuie sa fie intre 1 si 2.000.000.000.
Rezolvare
#1212
def suma_patrate_modulo(n):
numarator = (n * (n + 1) % 10234573) * ((2 * n + 1) % 10234573)
numitor = 6 % 10234573
invers_modular_numitor = pow(numitor, 10234571, 10234573)
rezultat = (numarator * invers_modular_numitor) % 10234573
return rezultat
def validare_n(n):
if n < 1 or n > 2000000000:
print("n trebuie sa fie intre 1 si 2.000.000.000.")
exit()
if __name__ == '__main__':
n = int(input("Introduceti numarul n: "))
validare_n(n)
rezultat = suma_patrate_modulo(n)
print(f"Rezultatul este: {rezultat}")