Cod sursa(job #3259353)

Utilizator User-77-Stancu Andreas User-77- Data 25 noiembrie 2024 22:18:50
Problema Koba Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;
ifstream cin("koba.in");
ofstream cout("koba.out");
long long int n,a,b,c,i,Sc,Sp,L,y,sum;
int s[10001];
pair <bool, int> f[10001];
int main()
{
    cin>>n>>c>>b>>a;
    a=a%10;
    b=b%10;
    c=c%10;
    if(n==1)
    {
        cout<<c;
        return 0;
    }
    s[1]=c;
    if(n==2)
    {
        cout<<c+b;
        return 0;
    }
    s[2]=b+c;
    if(n==3)
    {
        cout<<a+b+c;
        return 0;
    }
    s[3]=a+b+c;
    for(i=4;i<=n;i++)
    {
            int x=(a+b*c)%10;
            c=b;
            b=a;
            a=x;
            y=c*100+b*10+a;
            s[i]=s[i-1]+x;
            if(f[y].first==0)
            {
                f[y].first=1;
                f[y].second=i-2;
            }
            else if(f[y].first==1)
            {
                Sc=s[f[y].second];
                Sp=s[i-2]-s[f[y].second];
                L=(i-2)-f[y].second;
                break;
            }
    }
    if(L!=0)
    {
        sum=Sc+Sp*((n-f[y].second+1)/L)+(s[f[y].second+(n-f[y].second)%L]-s[f[y].second]);
    }
    else
    {
        sum=s[n];
    }
    cout<<sum;
    return 0;
}