Cod sursa(job #134974)

Utilizator astronomyAirinei Adrian astronomy Data 12 februarie 2008 19:08:43
Problema Koba Scor Ascuns
Compilator cpp Status done
Runda Marime 0.86 kb
#include <stdio.h>
#include <string.h>
using namespace std;

int A[16][16][16], S[1024], T[1024];

int main(void)
{
    freopen("koba.in", "rt", stdin);
    freopen("koba.out", "wt", stdout);

    int i, N, t1, t2, t3, K, res = 0;
    
    scanf("%d ", &N), N--;
    for(i = 0; i < 3; i++)
    {
        scanf("%d ", &T[i]), T[i] %= 10, S[i] += T[i];
        if(i > 0) S[i] += S[i-1];
    }
    A[T[0]][T[1]][T[2]] = 2, K = 3;
    while(1)
    {
        T[K] = T[K-1]+T[K-2]*T[K-3], T[K] %= 10, S[K] = S[K-1]+T[K];
        if(A[ T[K] ][ T[K-1] ][ T[K-2] ]) break ;
        A[ T[K] ][ T[K-1] ][ T[K-2] ] = K++;
    }

    if(N <= K) { printf("%d\n", S[N]); return 0; }

    i = A[ T[K] ][ T[K-1] ][ T[K-2] ], res = S[i];
    res += (S[K]-S[i])*((N-i)/(K-i));
    res += S[i+ (N-i)%(K-i)]-S[i];
    printf("%d\n", res);

    return 0;
}