Pagini recente » Cod sursa (job #1046196) | Cod sursa (job #2683480) | Cod sursa (job #2053731) | Cod sursa (job #2095456) | Cod sursa (job #1147645)
/*
Keep It Simple!
*/
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include<cstdio>
#include<cstring>
#define MOD 666013
long long N,Z[3][3];
void Multiply(long long a[3][3], long long b[3][3])
{
long long aux[3][3];
memset(aux, 0, sizeof(aux));
for (int i = 1; i <= 2; i++)
for (int j = 1; j <= 2; j++)
for (int k = 1; k <= 2; k++)
aux[i][j] = (aux[i][j] + (a[i][k] * b[j][k])%MOD) % MOD;
memcpy(a, aux,sizeof(aux));
}
void LgPow(int pow)
{
long long sol[3][3];
memcpy(sol, Z,sizeof(Z));
while (pow)
{
if (pow % 2)
Multiply(sol, Z);
Multiply(Z, Z);
pow /= 2;
}
memcpy(Z, sol, sizeof(Z));
}
int main()
{
freopen("elmaj.in", "r", stdin);
freopen("elmaj.out", "w", stdout);
scanf("%lld", &N);
Z[1][1] = 0; Z[1][2] = Z[2][1] = Z[2][2] = 1;
LgPow(N - 2);
printf("%lld", Z[2][2]);
}