Cod sursa(job #134649)

Utilizator wefgefAndrei Grigorean wefgef Data 12 februarie 2008 00:00:48
Problema Koba Scor Ascuns
Compilator cpp Status done
Runda Marime 0.89 kb
#include <cstdio>

int N;
int T[1024];
int S[1024];
int A[10][10][10];

int main() {
    freopen("koba.in", "r", stdin);
    freopen("koba.out", "w", stdout);
    
    scanf("%d %d %d %d", &N, &T[1], &T[2], &T[3]);
    
    T[1] %= 10; T[2] %= 10; T[3] %= 10;
    S[1] = T[1];
    S[2] = S[1] + T[2];
    S[3] = S[2] + T[3];
    A[T[3]][T[2]][T[1]] = 3;
    
    int found = 0, i = 3;
    while (!found) {
          ++i;
          T[i] = (T[i-1] + T[i-2] * T[i-3]) % 10;
          S[i] = S[i-1] + T[i];
          if (A[T[i]][T[i-1]][T[i-2]])
             found = A[T[i]][T[i-1]][T[i-2]];
          A[T[i]][T[i-1]][T[i-2]] = i;
    }
    
    if (N <= i) printf("%d\n", S[N]);
    else {
         int ret = S[found];
         N -= found;
         ret += N/(i-found) * (S[i]-S[found]);
         ret += S[found + N%(i-found)] - S[found];
         printf("%d\n", ret);
    }
}