Pagini recente » Cod sursa (job #1361963) | Cod sursa (job #2630561) | Cod sursa (job #697185) | Cod sursa (job #1013893) | Cod sursa (job #2066865)
#include<fstream>
using namespace std;
ifstream cin("kfib.in");
ofstream cout("kfib.out");
int n,a[3][3],i[3][3];
void produs(int a[3][3],int b[3][3],int c[3][3])
{
c[1][1]=((1ll*a[1][1]*b[1][1])%666013+(1ll*a[1][2]*b[2][1])%666013)%666013;
c[1][2]=((1ll*a[1][1]*b[1][2])%666013+(1ll*a[1][2]*b[2][2])%666013)%666013;
c[2][1]=((1ll*a[2][1]*b[1][1])%666013+(1ll*a[2][2]*b[2][1])%666013)%666013;
c[2][2]=((1ll*a[2][1]*b[1][2])%666013+(1ll*a[2][2]*b[2][2])%666013)%666013;
}
void copiere(int a[3][3],int c[3][3])
{
a[1][1]=c[1][1];
a[1][2]=c[1][2];
a[2][1]=c[2][1];
a[2][2]=c[2][2];
}
void pa(int n,int a[3][3])
{
int b[3][3];
if(n==1)
return;
pa(n/2,a);
produs(a, a ,b);
if(n%2!=0)
produs(b,i,a);
else
copiere(a,b);
}
int main()
{
cin>>n;
a[1][1]=a[1][2]=a[2][1]=i[1][1]=i[1][2]=i[2][1]=1;
if(n>2)
{
pa(n-2,a);
cout<<(a[1][1]+a[2][1])%666013<<"\0";
}
else
cout<<1;
return 0;
}