Pagini recente » Cod sursa (job #2780488) | Cod sursa (job #1081578) | Cod sursa (job #1310553) | Cod sursa (job #3232831) | Cod sursa (job #2261810)
#include <bits/stdc++.h>
#define mod 666013
#define ll long long
using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
int k;
void mul(ll a[2][2], ll b[2][2]){
ll p[2][2];
p[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0];
p[0][1] = a[0][0] * b[0][1] + a[0][1] * b[1][1];
p[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0];
p[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1];
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
p[i][j] %= mod;
memcpy(a, p, sizeof p);
}
ll lg(int k){
if(k < 2)
return k;
k--;
ll mat[2][2] = {0, 1, 1, 1};
ll aux[2][2] = {0, 1, 1, 1};
while(k){
if(k & 1)
mul(mat, aux);
mul(aux, aux);
k >>= 1;
}
return mat[1][0];
}
int main(){
in >> k;
out << lg(k);
return 0;
}