Pagini recente » Cod sursa (job #2329313) | Cod sursa (job #1242200) | Cod sursa (job #345301) | Cod sursa (job #1199408) | Cod sursa (job #771327)
Cod sursa(job #771327)
#include <cstdio>
#define MOD 666013
int A[2][2] = {{0, 1}, {1, 1}};
int fib[2][2] = {{0, 1}, {1, 1}};
void exp_mat() {
int aux[2][2];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
aux[i][j] = (((A[i][0] * A[j][0]) % MOD) + ((A[i][1] * A[1][j]) % MOD)) % MOD;
}
}
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
A[i][j] = aux[i][j];
}
}
}
void mul_mat() {
int aux[2][2];
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
aux[i][j] = (((fib[i][0] * A[j][0]) % MOD) + ((fib[i][1] * A[1][j]) % MOD)) % MOD;
}
}
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
fib[i][j] = aux[i][j];
}
}
}
int main() {
int k;
freopen("kfib.in", "r", stdin);
freopen("kfib.out", "w", stdout);
scanf("%d", &k);
while (k) {
if (k & 1) {
mul_mat();
}
exp_mat();
k >>= 1;
}
printf("%d\n", fib[0][0]);
fcloseall();
return 0;
}