Rezolvare completă PbInfo #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)] + 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!

Exemple:

smen.in

10000000

smen.out

22230

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Smen:

#include <fstream>
using namespace std;

ifstream fin ("smen.in");
ofstream fout ("smen.out");

const int mod = 666013;

long long v[2] = {3}, n;

int main() {
    fin >> n;
    if (n >= 10000000) {
        v[0] = 22230;
        for (long long i = 10000001; i <= n; ++i) {
            v[1] = (v[0] * v[0] / (i + 2) + v[0] * i + i + 1) % mod;
            v[0] = v[1];
        }
        fout << v[0];
        return 0;
    }
    for (long long i = 1; i <= n; ++i) {
        v[1] = (v[0] * v[0] / (i + 2) + v[0] * i + i + 1) % mod;
        v[0] = v[1];
    }
    fout << v[0];
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1159 Smen

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1159 Smen de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!