1212 - Sumă Pătrare: Difference between revisions
Dragos1234 (talk | contribs) |
Nagy Lenard (talk | contribs) No edit summary |
||
Line 7: | Line 7: | ||
== Date de ieșire == | == Date de ieșire == | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un | Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restrictiilor impuse", apoi pe un rând nou va afișa valoarea '''S'''. În caz contrar, se va afișa mesajul: "Datele de intrare nu corespund restrictiilor impuse". | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
Line 39: | Line 39: | ||
def validare_n(n): | def validare_n(n): | ||
if n < 1 or n > 2000000000: | if n < 1 or n > 2000000000: | ||
print(" | print("Datele de intrare nu corespund restrictiilor impuse") | ||
exit() | exit() | ||
Line 47: | Line 47: | ||
validare_n(n) | validare_n(n) | ||
rezultat = suma_patrate_modulo(n) | rezultat = suma_patrate_modulo(n) | ||
print(f" | print(f"Datele de intrare corespund restrictiilor impuse\n {rezultat}") | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 21:43, 26 March 2023
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
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restrictiilor impuse", apoi pe un rând nou va afișa valoarea S. În caz contrar, se va afișa mesajul: "Datele de intrare nu corespund restrictiilor impuse".
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
<syntaxhighlight lang="python" line>
- 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("Datele de intrare nu corespund restrictiilor impuse") exit()
if __name__ == '__main__':
n = int(input("Introduceti numarul n: ")) validare_n(n) rezultat = suma_patrate_modulo(n) print(f"Datele de intrare corespund restrictiilor impuse\n {rezultat}")
</syntaxhighlight>