Informatică, întrebare adresată de bianca20000, 9 ani în urmă

Cerința

Se dă un șir V. Știind V0 = 3 și regula de formare a șirului:

Vi = ([ Vi-1 * Vi-1 / (i + 2)] + V i-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
Atenție la limitele de timp și de memorie!

Răspunsuri la întrebare

Răspuns de mihaimarcel21
0
#include <iostream> #include <fstream> using namespace std; ifstream fin("smen.in"); ofstream fout("smen.out"); int n; unsigned long long sm; unsigned long long numere(int x) { unsigned long long rv=3; int i=0; while(x-- > 0) { i=i+1; rv=(rv*rv/(i+2)+rv*i+i+1)%666013; } return rv; } int main() { fin>>n; sm=numere(n); fout<<sm; return 0 ; }
Alte întrebări interesante