Pagini recente » Cod sursa (job #229698) | Cod sursa (job #1898109) | Cod sursa (job #1301127) | Cod sursa (job #2906992) | Cod sursa (job #2868797)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
int f[2][2] = {{1, 1}, {1, 0}};
int f0[2][2] = {{1, 0}, {0, 0}};
int rez[2][2] = {{1, 0}, {0, 1}};
void prod(int r[2][2], int a[2][2], int b[2][2]){
int m = 2, n = 2, p = 2;
int aux[2][2];
for(int i = 0; i < m; i++){//parcurgem matricea a pe linii
for(int k = 0; k < p; k++){
aux[i][k] = 0;
for(int j = 0; j < n; j++){
aux[i][k] = (aux[i][k] + (long long)a[i][j] * b[j][k] % MOD) % MOD;
}
}
}
for(int i = 0; i < m; i++){
for(int k = 0; k < p; k++){
r[i][k] = aux[i][k];
}
}
}
void putere(int r[2][2], int a[2][2], int n){
while(n != 0){
if(n % 2 != 0){
prod(r, r, a);
}
prod(a, a, a);
n/=2;
}
}
int main()
{
ifstream fin("kfib.in");
ofstream fout("kfib.out");
int k;
fin >> k;
putere(rez, f, k - 1);
prod(rez, f0, rez);
fout << rez[0][0];
fin.close();
fout.close();
return 0;
}