Pagini recente » Cod sursa (job #2783372) | Cod sursa (job #686248) | Cod sursa (job #1804866) | Cod sursa (job #2867754) | Cod sursa (job #419809)
Cod sursa(job #419809)
#include<stdio.h>
FILE *f,*g;
long long n,a,b,c,d,az,bz,cz,dz; long mod=666013;
void lgput(long long &a,long long &b,long long &c,long long &d,long long n)
{ if(n==1) { a=0; b=c=1; d=1; }
else if(n%2==0) { lgput(a,b,c,d,n/2); az=(a*a)%mod+(b*c)%mod; bz=(a*b)%mod+(b*d)%mod; cz=(a*c)%mod+(c*d)%mod; dz=(c*b)%mod+(d*d)%mod; a=az; b=bz; c=cz; d=dz; }
else { lgput(a,b,c,d,n/2); az=(a*b)%mod+(b*d)%mod; bz=(a*a)%mod+(b*c)%mod+(a*b)%mod+(b*d)%mod; cz=(c*b)%mod+(d*d)%mod; dz=(c*a)%mod+(c*d)%mod+(c*b)%mod+(d*d)%mod; a=az; b=bz; c=cz; d=dz; }
}
int main()
{ f=fopen("kfib.in","r"); g=fopen("kfib.out","w");
fscanf(f,"%lld",&n);
a=0; b=c=d=1; n--;
lgput(a,b,c,d,n);
fprintf(g,"%lld",d);
fclose(g);
return 0;
}