Pagini recente » Cod sursa (job #878847) | Cod sursa (job #1907803) | Cod sursa (job #125238) | Cod sursa (job #1177136) | Cod sursa (job #1607386)
#include<fstream>
#include<string.h>
#define mod 666013
using namespace std;
ifstream in("kfib.in");
ofstream out("kfib.out");
int n,fib[2][2],z[2][2];
void mult(int a[2][2], int b[2][2])
{
int i,j,k,c[2][2];
memset(c,0,sizeof(c));
for(i=0;i<2;++i)
for(j=0;j<2;++j)
for(k=0;k<2;++k)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mod;
for(i=0;i<2;++i)
for(j=0;j<2;++j)
a[i][j]=c[i][j];
}
void lg_pow(int p)
{
while(p){
if(p%2)
mult(fib,z);
mult(z,z);
p/=2;
}
}
int main(){
in>>n;
z[0][1]=z[1][0]=z[1][1]=1;
fib[0][0]=fib[1][1]=1;
lg_pow(n);
out<<fib[0][1];
return 0;
}