Cod sursa(job #135615)

Utilizator dominoMircea Pasoi domino Data 14 februarie 2008 00:31:08
Problema Koba Scor Ascuns
Compilator cpp Status done
Runda Marime 0.79 kb
#include <stdio.h>

#define FIN "koba.in"
#define FOUT "koba.out"

int N, A, B, C, S[1024], U[10][10][10];

int solve(int n, int a, int b, int c)
{
    int i, t, len, sum;

    a %= 10; b %= 10; c %= 10;
    if (n <= 3) return a + (n > 1)*b + (n > 2)*c;

    S[0] = a+b+c; n -= 3;
    for (i = 1; !U[a][b][c]; ++i)
    {
        U[a][b][c] = i;
        t = (c+a*b)%10;
        S[i] = S[i-1]+t;
        if (i == n) return S[i];
        a = b; b = c; c = t;
    }
    len = i-U[a][b][c];
    sum = S[i-1]-S[U[a][b][c]-1];
    n -= U[a][b][c]-1;
    return (n/len)*sum+S[U[a][b][c]-1+n%len];
}

int main(void)
{
    freopen(FIN, "r", stdin);
    freopen(FOUT, "w", stdout);

    scanf("%d %d %d %d", &N, &A, &B, &C);
    printf("%d\n", solve(N, A, B, C));

    return 0;
}