3630 - codred: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
Line 11: Line 11:
  3
  3
; Iesire
; Iesire
Datele de intrare corespund restrictiilor impuse
  95
  95
== Exemplu 2 ==
== Exemplu 2 ==

Latest revision as of 21:38, 2 January 2024

Cerinţa[edit]

Se dă n un număr natural. Să se calculeze suma ∑nk=1(k!⋅(k2+k+1)).

Date de intrare[edit]

Programul citește de la tastatură numărul n.

Date de ieșire[edit]

Programul va afișa pe ecran valoarea sumei, modulo 1.000.000.007.

Restricţii şi precizări[edit]

  • 1 ⩽ n ⩽ 10.000.000

Exemplul 1[edit]

Intrare
3
Iesire
Datele de intrare corespund restrictiilor impuse
95

Exemplu 2[edit]

Intrare
100000000
Iesire
Datele de intrare nu corespund restrictiilor impuse

Rezolvare[edit]

<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]

Suma este 1!⋅3+2!⋅7+3!⋅13=3+14+78=95.