Pagini recente » Cod sursa (job #1238872) | Cod sursa (job #1921606) | Cod sursa (job #720930) | Cod sursa (job #2085298) | Cod sursa (job #1925339)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
int n;
void matrix_factor(int a1[2][2], int b1[2][2], int c[2][2])
{
static int a[2][2], b[2][2];
for(int i=0; i<2; ++i)
for(int j=0; j<2; ++j)
{
a[i][j] = a1[i][j];
b[i][j] = b1[i][j];
}
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] + (1LL * a[i][k] * b[k][j]) % MOD) %MOD;
}
}
int fast_exp(int k)
{
int rez[2][2]={{0,1}, {1,1}};
int mat[2][2]={{0,1}, {1,1}};
while(k)
{
if(k%2) matrix_factor(rez,mat,rez);
matrix_factor(mat,mat,mat);
k/=2;
}
return rez[0][0];
}
int main()
{
ifstream f("kfib.in");
ofstream g("kfib.out");
f>>n;
g<<fast_exp(n);
}