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>