Pagini recente » Cod sursa (job #1676209) | Cod sursa (job #2716722) | Cod sursa (job #2161460) | Cod sursa (job #2930021) | Cod sursa (job #1735275)
# include <fstream>
# define MOD 666013
using namespace std;
ifstream fin("kfib.in");
ofstream fout("kfib.out");
long long a[2][2]={{1,1},{1,0}};
long long b[2][2];
long long k[2][2]={{1,0},{0,1}};
int n;
void copiere(long long a[2][2],long long b[2][2]){
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++)
a[i][j]=b[i][j];
}
void inmultire(long long a[2][2],long long b[2][2],long long c[2][2]){
for(int i=0;i<=1;i++)
for(int j=0;j<=1;j++){
c[i][j]=0;
for(int k=0;k<=1;k++){
c[i][j]+=a[i][k]*b[k][j];
c[i][j]%=MOD;
}
}
}
int main () {
fin>>n;
if(n<=2){
if(n==0)
fout<<"0\n";
else
fout<<"1\n";
return 0;
}
n-=2;
while(n){
if(n&1){
inmultire(k,a,b);
copiere(k,b);
}
inmultire(a,a,b);
copiere(a,b);
n/=2;
}
fout<<(k[0][0]+k[0][1])%MOD<<"\n";
return 0;
}