Pagini recente » Cod sursa (job #1913968) | Cod sursa (job #1275921) | Cod sursa (job #966299) | Cod sursa (job #2337147) | Cod sursa (job #340261)
Cod sursa(job #340261)
#include <cstdio>
bool use[10][10][10];
int t[10001];
int T1, T2, T3;
int n;
int main()
{
freopen("koba.in","r",stdin);
scanf("%d %d %d %d\n", &n, &t[1], &t[2], &t[3]);
t[1] %= 10;
t[2] %= 10;
t[3] %= 10;
use[t[1]][t[2]][t[3]] = 1;
int i,m;
for(m = 4; m <= 1000; ++m)
{
i = m;
t[i] = t[i-1] + t[i-2] * t[i-3];
t[i] %= 10;
if(use[t[i-2]][t[i-1]][t[i]] == 1)
{
T1 = t[i-2];
T2 = t[i-1];
T3 = t[i];
break;
}
use[t[i-2]][t[i-1]][t[i]] = 1;
}
int sum = 0;
// for(i = 1; i <= m; ++i) printf("%d ", t[i]);
// printf("\n");
if(n <= m)
{
for(i = 1; i <= n; ++i)
sum += t[i];
}
else
{
for(i = 1; i <= m; ++i)
if(t[i] == T1 && t[i+1] == T2 && t[i+2] == T3) break;
int p = i;
for(i = 1; i < p; ++i) sum += t[i];
int s = 0;
for(i = p; i <= m - 3; ++i)
s += t[i];
n -= p-1;
//printf("s:%d \n",s);
sum += s * (n / (m-3-p+1));
//printf("%d %d\n",n, m-3-p+1);
int r = n % (m-3-p+1);
// printf("%d\n",r);
for(i = p; i < p + r; ++i) sum += t[i];
}
freopen("koba.out","w",stdout);
printf("%d\n", sum);
return 0;
}