Pagini recente » Cod sursa (job #2157155) | Cod sursa (job #1804125) | Cod sursa (job #376382) | Cod sursa (job #2358449) | Cod sursa (job #972507)
Cod sursa(job #972507)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
int Used[15][15][15], T1, T2, T3, Steps, N, Sum[110], Tail_Length, Cycle_Length;
int main()
{
freopen("koba.in", "r", stdin);
freopen("koba.out", "w", stdout);
scanf("%i %i %i %i", &N, &T1, &T2, &T3);
T1 %= 10, T2 %= 10, T3 %= 10;
Sum[ ++ Steps ] = T1;
Sum[ ++ Steps ] = T1 + T2;
while(!Used[T1][T2][T3])
{
Sum[ ++ Steps ] = Sum[ Steps - 1] + T3;
Used[T1][T2][T3] = Steps;
int AuxT2 = T2, AuxT3 = T3;
T3 = (T3 + T1 * T2) % 10;
T2 = AuxT3;
T1 = AuxT2;
}
Tail_Length = Used[T1][T2][T3] - 1;
Cycle_Length = Steps - Tail_Length;
if(N <= Tail_Length) printf("%i\n", Sum[N]);
else printf("%i\n", Sum[Tail_Length] + ((N - Tail_Length) / Cycle_Length) * (Sum[Steps] - Sum[Tail_Length]) + Sum[Tail_Length + ((N - Tail_Length) % Cycle_Length)] - Sum[Tail_Length]);
return 0;
}