Pagini recente » Cod sursa (job #2590420) | Cod sursa (job #1742452) | Cod sursa (job #542744) | Cod sursa (job #833660) | Cod sursa (job #3228632)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("kfib.in");
ofstream fout ("kfib.out");
const int mod = 666013;
int ans[3][3], a[3][3], x[3][3];
void inmult (int a[][3], int b[][3], int c[][3]) {
c[1][1] = c[1][2] = c[2][2] = c[2][1] = 0;
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 2; ++j) {
for (int k = 1; k <= 2; k++) {
c[i][j] += 1ll * a[i][k] * b[j][k] % mod;
c[i][j] %= mod;
}
}
}
}
void egal (int a[][3], int b[][3]) {
for (int i = 1; i <= 2; i++) {
for (int j = 1; j <= 2; j++) {
a[i][j] = b[i][j];
}
}
}
void exp (int n) {
ans[1][1] = ans[2][2] = 1;
a[1][1] = a[1][2] = a[2][1] = 1;
while (n > 0) {
if (n & 1) {
inmult(ans, a, x);
egal(ans, x);
}
inmult(a, a, x);
egal(a, x);
n >>= 1;
}
fout << ans[2][2];
}
int main () {
int n; fin >> n;
exp(n + 1);
}