Cod sursa(job #2091358)

Utilizator CrystyAngelDinu Cristian CrystyAngel Data 19 decembrie 2017 17:05:16
Problema Koba Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int f;
int v[1000];
int s[1000];

inline int num(int a,int b,int c)
{
    return a*100+b*10+c;
}

int main()
{
    int a,b,c,n,i,d,ans=0,nrec,rec;
    fin>>n>>a>>b>>c;
    a%=10,b%=10,c%=10;
    v[num(a,b,c)]=3;
    if(n==1)
        fout<<a;
    if(n==2)
        fout<<a+b;
    if(n==3)
        fout<<a+b+c;
    if(n<=3)
        return 0;
    ans = a+b+c;
    for(i=4; i<=n; ++i)
    {
        d = (c+b*a)%10;
        ans+=d;
        if(v[num(b,c,d)])
        {
            rec = i-v[num(b,c,d)]+1;
            n-=i;
            nrec = ans - s[num(b,c,d)];
            ans+=(n/rec)*nrec;
            n%=rec;
            break;
        }
        else
        v[num(b,c,d)]=i,s[num(b,c,d)]=ans;
        a=b,b=c,c=d;
    }
    a=b,b=c,c=d;
    for(i=1 ; i<=n; ++i)
    {
        d = (c+b*a)%10;
        ans+=d;
        a=b,b=c,c=d;
    }
    fout<<ans;
}