Pagini recente » Cod sursa (job #2883034) | Cod sursa (job #234757) | Cod sursa (job #491415) | Cod sursa (job #2938906) | Cod sursa (job #631825)
Cod sursa(job #631825)
#include <stdio.h>
#include <string.h>
#define MOD 666013
void matrix_mult(int (*A)[2], int (*B)[2])
{
int C[2][2];
memset(C, 0, sizeof(C));
int i, j, k;
for (i=0; i<2; ++i)
for (j=0; j<2; ++j)
for (k=0; k<2; ++k)
C[i][j] += (1ll*A[i][k]*B[k][j])%MOD;
memcpy(A, C, sizeof(C));
}
int main()
{
freopen("kfib.in", "r", stdin);
freopen("kfib.out", "w", stdout);
int n;
int T[2][2] = {{1, 1}, {1, 0}};
int res[2][2] = {{1, 0}, {0, 1}};
scanf("%d", &n);
n -= 1;
while (n) {
if (n%2)
matrix_mult(res, T);
matrix_mult(T, T);
n >>= 1;
}
printf("%d\n", res[0][0]);
return 0;
}