Pagini recente » Cod sursa (job #1076852) | Cod sursa (job #3177814) | Cod sursa (job #1998250) | Cod sursa (job #2169440) | Cod sursa (job #3249550)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("kfib.in");
ofstream gout("kfib.out");
int A[2][2]= {{1,1},{1,0}};
int I[2][2]= {{1,0},{0,1}};
void inmultire(int a[][2],int b[][2])
{
long long c[2][2];
int i,j,k;
for(i=0; i<2; ++i)
for(j=0; j<2; ++j)
{
c[i][j]=0;
for(k=0; k<2; ++k)
c[i][j]+=1LL*a[i][k]*b[k][j];
}
for(i=0; i<2; ++i)
for(j=0; j<2; ++j)
a[i][j]=c[i][j]%666013;
}
void putere(int p)
{
while(p>0)
{
if(p&1)
{
inmultire(A,A);
p/=2;
}
else
{
inmultire(A,I);
p--;
}
}
}
int main()
{
int k;
if(k<=2)
{
gout<<k;
return 0;
}
putere(k-1);
gout<<I[0][0];
return 0;
}