Pagini recente » Cod sursa (job #1928071) | Cod sursa (job #2528702) | Cod sursa (job #1610841) | Cod sursa (job #1452276) | Cod sursa (job #2361699)
#include <iostream>
#include <fstream>
using namespace std;
ofstream fo("kfib.out");
ifstream fi("kfib.in");
struct matrix
{
int a=0,b=0,c=0,d=0;
};
matrix operator *(matrix A,matrix B)
{
matrix C;
C.a=(A.a*B.a+A.b*B.c)%666013;
C.b=(A.a*B.b+A.b*B.d)%666013;
C.c=(A.c*B.a+A.d*B.c)%666013;
C.d=(A.c*B.b+A.d*B.d)%666013;
return C;
}
int k;
matrix T,F;
matrix fact(matrix D,int p)
{
matrix I;
I.a=1;
I.d=1;
for(long long i=1;i<=(1<<30);i*=2)
{
if(i&p)
I=I*D;
D=D*D;
}
return I;
}
int main()
{
fi>>k;
T.a=0;
T.b=1;
T.c=1;
T.d=1;
F.a=1;
F.c=1;
T=fact(T,k-1);
T=T*F;
fo<<T.a%666013;
fi.close();
fo.close();
return 0;
}