Cod sursa(job #1688615)

Utilizator antanaAntonia Boca antana Data 13 aprilie 2016 17:07:50
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#define CIF 10
using namespace std;
int t[CIF][CIF][CIF], v[CIF*CIF*CIF+1];
int main()
{
    freopen("koba.in", "r", stdin);
    freopen("koba.out", "w", stdout);
    int f=0, i, n, sum=0, ciclu, st, sum1, r;
    scanf("%d%d%d%d", &n, &v[1], &v[2], &v[3]);
    v[1]%=10;
    v[2]%=10;
    v[3]%=10;
    t[v[1]][v[2]][v[3]]=1;
    for(i=4;i<=n && (!f);i++)
    {
        v[i]=(v[i-1]+v[i-2]*v[i-3])%10;
        f=t[v[i-2]][v[i-1]][v[i]];
        if(!f)
            t[v[i-2]][v[i-1]][v[i]]=i-2;
        else
        {
            ciclu=i-2-t[v[i-2]][v[i-1]][v[i]];
            st=t[v[i-2]][v[i-1]][v[i]];
        }
    }
    if(i>n)
    {
        sum=0;
        for(i=1;i<=n;i++)
            sum+=v[i];
        printf("%d", sum);
    }
    else
    {
        sum=0;
        for(i=st;i<=st+ciclu-1;i++)
            sum+=v[i];
        sum1=0;
        for(i=1;i<st;i++)
            sum1+=v[i];
        n-=st-1;
        sum=sum*(n/ciclu)+sum1;
        r=n%ciclu;
        for(i=st;i<st+r;i++)
            sum+=v[i];
        printf("%d", sum);
    }
    return 0;
}