Cod sursa(job #1866904)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 3 februarie 2017 16:47:18
Problema Koba Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 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,nr,s,pas,i,aux;
    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;
    }
    pas=2;
    while (f[a*100+b*10+c]==0){
        //printf ("%d ",a*100+b*10+c);
        pas++;
        f[a*100+b*10+c]=pas;
        term[pas]=c+term[pas-1];
        aux=(c+a*b)%10;
        a=b;
        b=c;
        c=aux;
    }
    nr=a*100+b*10+c;
    sol=term[f[nr]-3];
    s=term[pas]-term[f[nr]-1];
    n=n-f[nr]+3;
    sol=sol+(long long)s*(n/(pas-f[nr]+1));
    n%=(pas-f[nr]+1);

    for (i=0;i<1000;i++){
        if (f[i]>=f[nr]-2 && f[i]<=f[nr]+n-3)
            sol=sol+i%10;
        if (f[nr]==3 && i==nr)
            sol=sol+nr%100+(nr/10)%10;
    }
    fprintf (fout,"%lld",sol);
    return 0;
}