Pagini recente » Cod sursa (job #277793) | Cod sursa (job #870751) | Cod sursa (job #568972) | Cod sursa (job #2493237) | Cod sursa (job #2419358)
#include <cstdio>
using namespace std;
const int MOD = 666013;
int p[3][3], a[3][3];
void prod_mat(int a[3][3], int b[3][3], int c[3][3])
{
int i, j, k;
for(i = 1 ; i <= 2 ; i ++)
for(j = 1 ; j <= 2 ; j ++)
{
c[i][j] = 0;
for(k = 1 ; k <= 2 ; k ++)
c[i][j] = (c[i][j] + (a[i][k] * b[k][j]) % MOD) % MOD;
}
}
void cpy(int a[3][3], int b[3][3])
{
int i, j;
for(i = 1 ; i <= 2 ; i ++)
for(j = 1 ; j <= 2 ; j ++)
a[i][j] = b[i][j];
}
void fast_pow(int k)
{
int b[3][3];
for( ; k ; k = (k >> 1))
{
if(k & 1)
{
cpy(b, p);
prod_mat(a, b, p);
}
prod_mat(a, a, b);
cpy(a, b);
}
}
int main()
{
freopen("kfib.in" , "r" , stdin);
freopen("kfib.out" , "w" , stdout);
int k;
scanf("%d" , &k);
p[1][1] = p[2][2] = a[1][1] = a[2][2] = a[1][2] = 1;
fast_pow(k);
printf("%d\n" , p[2][1]);
return 0;
}