Cod sursa(job #1642716)

Utilizator razvandraghiciDraghici Razvan razvandraghici Data 9 martie 2016 15:50:08
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>

using namespace std;
int n, t1, t2, t3, nr, s[100000003], f[1010], t, i, ant1, ant2, ant3, ok, nrcrt, perioada, sperioada, initial;
int main()
{
    ifstream fin("koba.in");
    ofstream fout("koba.out");


    fin>>n>>t1>>t2>>t3;
    nr=t1%10*100+t2%10*10+t3;
    s[1]=t1%10;
    s[2]=s[1]+t2%10;
    s[3]=s[2]+t3%10;
    f[nr]=1;
    t++;
    i=4;
    ant1=t1%10;
    ant2=t2%10;
    ant3=t3%10;


    while(ok==0){
        t++;
        nrcrt=(ant3+ant2*ant1)%10;
        s[i]=s[i-1]+nrcrt%10;
        i++;
        ant1=ant2;
        ant2=ant3;
        ant3=nrcrt;
        nr=ant1%10*100+ant2%10*10+ant3%10;
        if(f[nr]!=0){
            ok=1;
            perioada=t-f[nr];
            initial=f[nr];
            sperioada=s[t-1]-s[initial-1];
        }
        f[nr]=t;
    }


    if(n<=initial){
        fout<<s[n];
        return 0;
    }

    fout<<s[initial-1]+(n-initial)/perioada*sperioada+s[initial+(n-initial)%perioada]-s[initial-1];
    return 0;
}