Cod sursa(job #1973156)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 24 aprilie 2017 17:54:06
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>

using namespace std;
int f[1001],term[1001];
int main()
{
    FILE *fin=fopen ("koba.in","r");
    FILE *fout=fopen ("koba.out","w");
    int n,a,b,c,i,aux,p;
    long long sol;
    fscanf (fin,"%d%d%d%d",&n,&a,&b,&c);
    a%=10;
    b%=10;
    c%=10;
    term[1]=a;
    term[2]=b+a;
    term[3]=a+b+c;
    if (n<4){
        fprintf (fout,"%d",term[n]);
        return 0;
    }
    for (i=4;i<=n;i++){
        //printf ("%d ",a*100+b*10+c);
        aux=(c+a*b)%10;
        a=b;
        b=c;
        c=aux;
        term[i]=c+term[i-1];
        if (f[a*100+b*10+c]==0)
            f[a*100+b*10+c]=i;
        else break;
    }
    if (i>n){
        fprintf (fout,"%d",term[n]);
        return 0;
    }
    p=f[a*100+b*10+c];
    // sunt p termeni pana la ciclu
    sol=(long long)term[p] + (long long)(term[i]-term[p])*((n-p)/(i-p)) + (long long)term[p+((n-p)%(i-p))]-(long long)term[p];
    fprintf (fout,"%lld",sol);
    return 0;
}