Pagini recente » Cod sursa (job #2817274) | Cod sursa (job #2035592) | Cod sursa (job #2999005) | Cod sursa (job #2611868) | Cod sursa (job #3187828)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
long long A[2][2] = { {1, 1}, {0, 0} };
long long C[2][2] = { {0, 1}, {1, 1} };
long long sol[2][2] = { {1, 0}, {0, 1} };
void multiply(long long a[2][2], long long b[2][2]){
long long c[2][2];
for(int i=0;i<2;i++)
for(int j=0;j<2;j++){
c[i][j] = 0;
for(int k=0;k<2;k++)
c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % MOD;
}
for(int i=0;i<2;i++)
for(int j=0;j<2;j++)
a[i][j] = c[i][j];
}
void lg_put(int n){
while(n){
if(n % 2 == 1){
multiply(sol, C);
n--;
}
else {
multiply(C, C);
n >>= 1;
}
}
}
int n;
int main(){
fin >> n;
lg_put(n);
multiply(sol, A);
fout << sol[1][0] << "\n";
return 0;
}