3630 - codred: Difference between revisions
Pagină nouă: == Cerinţa == Se dă '''n''' un număr natural. Să se calculeze suma '''∑nk=1(k!⋅(k2+k+1))'''. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul va afișa pe ecran valoarea sumei, modulo '''1.000.000.007'''. == Restricţii şi precizări == * '''1 ⩽ n ⩽ 10.000.000''' == Exemplul 1 == ; Intrare 3 ; Iesire 95 == Exemplu 2 == ; Intrare 100000000 ; Iesire Datele de intrare nu corespund restrictiilor imp... |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 7: | Line 7: | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
* '''1 ⩽ n ⩽ 10.000.000''' | * '''1 ⩽ n ⩽ 10.000.000''' | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
3 | 3 | ||
; Iesire | ; Iesire | ||
Datele de intrare corespund restrictiilor impuse | |||
95 | 95 | ||
== Exemplu 2 == | == Exemplu 2 == | ||
; Intrare | ; Intrare | ||
Line 19: | Line 18: | ||
; Iesire | ; Iesire | ||
Datele de intrare nu corespund restrictiilor impuse | Datele de intrare nu corespund restrictiilor impuse | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
Line 54: | Line 51: | ||
main() | main() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicatie == | == Explicatie == | ||
Suma este '''1!⋅3+2!⋅7+3!⋅13=3+14+78=95'''. | Suma este '''1!⋅3+2!⋅7+3!⋅13=3+14+78=95'''. |
Latest revision as of 21:38, 2 January 2024
Cerinţa[edit | edit source]
Se dă n un număr natural. Să se calculeze suma ∑nk=1(k!⋅(k2+k+1)).
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran valoarea sumei, modulo 1.000.000.007.
Restricţii şi precizări[edit | edit source]
- 1 ⩽ n ⩽ 10.000.000
Exemplul 1[edit | edit source]
- Intrare
3
- Iesire
Datele de intrare corespund restrictiilor impuse 95
Exemplu 2[edit | edit source]
- Intrare
100000000
- Iesire
Datele de intrare nu corespund restrictiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def factorial(n, mod):
fact = 1 for i in range(1, n + 1): fact = (fact * i) % mod return fact
def compute_sum(n):
mod = 1000000007 suma = 0 for k in range(1, n + 1): term = (factorial(k, mod) * (k*k + k + 1)) % mod suma = (suma + term) % mod return suma
def main():
n = int(input())
if n > 10000000: print("Datele de intrare nu corespund restrictiilor impuse") return
suma = compute_sum(n) print("Datele de intrare corespund restrictiilor impuse") print(suma)
if __name__ == "__main__":
main()
</syntaxhighlight>
Explicatie[edit | edit source]
Suma este 1!⋅3+2!⋅7+3!⋅13=3+14+78=95.