Cod sursa(job #139255)

Utilizator filipbFilip Cristian Buruiana filipb Data 19 februarie 2008 21:15:51
Problema Koba Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>

int N, T1, T2, T3, T4, x[1024], cnt;
short int D[10][10][10], perioada, rest;

int main(void)
{
    int i, j;
    
    freopen("koba.in", "r", stdin);
    freopen("koba.out", "w", stdout);

    scanf("%d %d %d %d", &N, &T1, &T2, &T3);
    
    T1 %= 10; T2 %= 10; T3 %= 10;
    x[1] = T1; x[2] = T2; x[3] = T3;
    for (D[T1][T2][T3] = 1, i = 2; ; ++i)
    {
        T4 = (T3 + T1 * T2) % 10;
        T1 = T2; T2 = T3; T3 = T4;
        x[i+2] = T3;        
        if (D[T1][T2][T3])
            break;
        D[T1][T2][T3] = i;
    }

    perioada = i-D[T1][T2][T3];
    rest = D[T1][T2][T3];

    if (N <= rest)
        for (i = 1; i <= N; i++)
            cnt += x[i];
    else
    {
        for (i = 1; i < rest; i++)
            cnt += x[i];
        for (j = 0, i = rest; i < rest+perioada; i++)
            j += x[i];
        cnt += j * ((N-rest+1) / perioada);
        for (i = rest + perioada * ((N-rest+1) / perioada), j = rest; i <= N; i++, j++)
            cnt += x[j];
    }

    printf("%d\n", cnt);

    return 0;
}