Pagini recente » Cod sursa (job #2980608) | Cod sursa (job #2550613) | Cod sursa (job #635982) | Cod sursa (job #2614161) | Cod sursa (job #2442403)
#include <iostream>
#include <fstream>
using namespace std;
void mult1(long long A[2][2], long long B[2][2]) {
int i, j, l;
long long C[2][2];
for (i = 0; i < 2; i++){
for (j = 0; j < 2; j++){
C[i][j] = 0;
for (l = 0; l < 2; l++) {
C[i][j] = (C[i][j] + A[i][l] * B[l][j])%666013;}}}
for(int i = 0; i < 2; i++){
for(int j = 0; j < 2; j++){
A[i][j] = C[i][j];
}
}
}
int main(){
ifstream cin("kfib.in");
ofstream cout("kfib.out");
long long Z[2][2]={{0, 1},
{1, 1}};
int A[1][2]={{1,1}};
long long k;
cin >> k;
long long N[2][2]={{1, 0},{0, 1}};
while(k){
if(k%2==1){
mult1(N, Z);
}
k = k/2;
mult1(Z, Z);
}
cout << N[0][1]<<'\n';
return 0;
}