1159 - Smen
Cerința
Se dă un șir V
. Știind V0 = 3
și regula de formare a șirului:
Vi = ([Vi-1*Vi-1 / (i + 2)] + Vi-1 * i + i + 1) % 666013
.
să se determine al n
-lea termen al șirului. (unde [x]
reprezintă partea întreagă a numărului x
)
Date de intrare
Fișierul de intrare smen.in
conține numărul n
.
Date de ieșire
Fișierul de ieșire smen.out
va conține al n
-lea termen al șirului.
Restricții și precizări
1 ≤ n ≤ 20.000.000
Exemplu 1
- Intrare
- 10000000
- Ieșire
- 22230
Exemplu 2
- Intrare
- 21345670
- Ieșire
- Date de intrare gresite!
Rezolvare
<syntaxhighlight lang="python" line="1">
- 1159 Smen
def conditii(n):
return 1 <= n <= 20_000_000
def main():
n = int(input())
if not conditii(n): return print("Date de intrare gresite!")
v_n, v_i = 3, 0 for i in range(n+1): v_i = ((v_n * v_n // (i+2)) + v_n * i + i + 1) % 666013 v_n = v_i
print(v_i)
if __name__ == "__main__":
main()
</syntaxhighlight>