Cod sursa(job #2365664)

Utilizator FrostfireMagirescu Tudor Frostfire Data 4 martie 2019 15:39:21
Problema Koba Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream f("koba.in");
ofstream g("koba.out");

long long t1, t2, t3, n, nr, frec[1010], s[100100], pozi, pozf, sol;
bool ok = 1;

int main()
{
    f >> n >> t1 >> t2 >> t3;
    t1 = t1 % 10;
    t2 = t2 % 10;
    t3 = t3 % 10;
    frec[t1*100 + t2*10 + t3] = 1;

    s[1] = t1;
    s[2] = t1 + t2;
    s[3] = t1 + t2 + t3;

    if(n == 1)
        {   g << s[1] << '\n';
            return 0;
        }
    if(n == 2)
        {   g << s[2] << '\n';
            return 0;
        }
    if(n == 3)
        {   g << s[3] << '\n';
            return 0;
        }
    for(int i=4; i<=n && ok; i++)
    {
        int x = (t1 * t2 + t3) % 10;
        t1 = t2;
        t2 = t3;
        t3 = x;
        s[i] = s[i-1] + x;

        nr = t1 * 100 + t2 * 10 + t3;
        if(frec[nr]) pozf = i, ok = 0;
        else frec[nr] = i;

        //if(i == n) g << s[i] << '\n';
    }
    pozi = frec[nr];
    long long x = (n - pozi) / (pozf - pozi);
    long long y = (n - pozi) % (pozf - pozi);
    sol = s[pozi] + x * (s[pozf] - s[pozi]) + s[pozi + y] - s[pozi];
    g << sol << '\n';
    return 0;
}