Pagini recente » Cod sursa (job #2489775) | Cod sursa (job #1777338) | Cod sursa (job #2258200) | Cod sursa (job #355242) | Cod sursa (job #134649)
Cod sursa(job #134649)
Utilizator |
Andrei 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);
}
}