Pagini recente » Cod sursa (job #269038) | Cod sursa (job #2586421) | Cod sursa (job #2837223) | Cod sursa (job #2219617) | Cod sursa (job #137832)
Cod sursa(job #137832)
#include <stdio.h>
#include <math.h>
long t1, t2, t3, ut1, ut2, ut3, n, p, aux, suma, sumr, a[1024], v[16][16][16], vb1, num, sol;
int main() {
freopen("koba.in", "r", stdin);
freopen("koba.out", "w", stdout);
scanf("%ld\n", &n);
scanf("%ld %ld %ld\n", &t1, &t2, &t3);
p = 3;
ut1 = t1 % 10;ut2 = t2 % 10;ut3 = t3 % 10;
v[ut1][ut2][ut3] = 1;
a[1] = ut1;a[2] = a[1] + ut2;a[3] = a[2] + ut3;
//printf("%ld %ld %ld ", ut1, ut2, ut3);
while (p < n) {
++p;
aux = ut3;
ut3 = (ut3 + (ut2 * ut1)) % 10;
ut1 = ut2;
ut2 = aux;
a[p] = a[p - 1] + ut3;
if (v[ut1][ut2][ut3] == 0) {
v[ut1][ut2][ut3] = p - 2;
} else {
if (vb1 == 0) {
suma = a[v[ut1][ut2][ut3] - 1];
sumr = a[p - 3] - a[v[ut1][ut2][ut3] - 1];
vb1 = 1;
break;
}
}
//printf("%ld ", ut3);
}
//printf("\n");
//printf("%ld %ld\n", suma, sumr);
num = (p - 3) - (v[ut1][ut2][ut3] - 1);
if (n <= v[ut1][ut2][ut3] - 1) {
printf("%ld\n", a[v[ut1][ut2][ut3] - 1]);
return 0;
} else {
n -= (v[ut1][ut2][ut3] - 1);
sol = suma + ((n / num) * sumr);
sol += (a[n % num + (v[ut1][ut2][ut3] - 1)] - suma);
printf("%ld\n", sol);
}
return 0;
}