Pagini recente » Cod sursa (job #2714510) | Cod sursa (job #1611496) | Cod sursa (job #835688) | Cod sursa (job #3252657) | Cod sursa (job #2361709)
#include <iostream>
#include <fstream>
using namespace std;
ofstream fo("kfib.out");
ifstream fi("kfib.in");
struct matrix
{
long long a=0,b=0,c=0,d=0;
};
matrix operator *(matrix A,matrix B)
{
matrix C;
C.a=(A.a*B.a%666013+A.b*B.c%666013)%666013;
C.b=(A.a*B.b%666013+A.b*B.d%666013)%666013;
C.c=(A.c*B.a%666013+A.d*B.c%666013)%666013;
C.d=(A.c*B.b%666013+A.d*B.d%666013)%666013;
return C;
}
long long k;
matrix T,F;
matrix fact(matrix D,long long 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;
}