Pagini recente » Cod sursa (job #1207607) | Cod sursa (job #1665486) | Cod sursa (job #1931748) | Cod sursa (job #450827) | Cod sursa (job #1470582)
#include <stdio.h>
#include <string.h>
#define dim 2
#define modulo 666013
int C[2][2] = {1, 0, 0, 1};
int A[2][2] = {0, 1, 1, 1};
void mul(int A[dim][dim], int B[dim][dim])
{
int C[dim][dim] = {0};
for (int i = 0 ; i < 2 ; i++)
for (int j = 0 ; j < 2 ; ++j)
{
int tmp = 0;
for (int k = 0 ; k < 2 ; k++)
tmp = (tmp + 1LL * A[i][k] * B[k][j]) % modulo;
C[i][j] = tmp % modulo;
}
memcpy(A, C, 4 * sizeof(int));
}
void power(int k)
{
for (int i = 0; (1 << i) <= k; i++)
{
if (k & (1 << i))
mul(C, A);
mul(A, A);
}
}
int main()
{
int k;
freopen("kfib.in", "r", stdin);
freopen("kfib.out", "w", stdout);
scanf("%d", &k);
power(k - 1);
printf("%d", C[1][1] % modulo);
}