Pagini recente » Cod sursa (job #3041362) | Cod sursa (job #1447481) | Cod sursa (job #338873) | Cod sursa (job #30968) | Cod sursa (job #2187142)
#include <iostream>
#include <cstdio>
#define MOD 666013
using namespace std;
int n;
int fib[2][2]={{1,1},{1,0}};
int rid[2][2]={{1,0},{0,1}};
void inmultire(int m1[2][2],int m2[2][2])
{
int c[2][2];
c[0][0]=(1LL*m1[0][0]*m2[0][0]%MOD+1LL*m1[0][1]*m2[1][0]%MOD)%MOD;
c[0][1]=(1LL*m1[0][0]*m2[0][1]%MOD+1LL*m1[0][1]*m2[1][1]%MOD)%MOD;
c[1][0]=(1LL*m1[1][0]*m2[0][0]%MOD+1LL*m1[1][1]*m2[1][0]%MOD)%MOD;
c[1][1]=(1LL*m1[1][0]*m2[0][1]%MOD+1LL*m1[1][1]*m2[1][1]%MOD)%MOD;
m1[0][0]=c[0][0];
m1[0][1]=c[0][1];
m1[1][0]=c[1][0];
m1[1][1]=c[1][1];
}
void putere()
{
while(n)
{
if(n%2)
{
inmultire(rid,fib);
--n;
}
n/=2;
inmultire(fib,fib);
}
}
int main()
{
freopen("kfib.in","r",stdin);
freopen("kfib.out","w",stdout);
scanf("%d", &n);
n-=2;
putere();
cout<<(1LL*rid[0][0]+rid[1][0])%MOD;
return 0;
}