Pagini recente » Cod sursa (job #2210355) | Cod sursa (job #315104) | Cod sursa (job #3280279) | Cod sursa (job #1432268) | Cod sursa (job #1899199)
#include <fstream>
#define mod 666013
using namespace std;
ifstream cin("kfib.in");
ofstream cout("kfib.out");
int a[3][3]={{0,0,0},{0,1,1},{0,1,0}},n,b[3][3];
void inmultire(int a[3][3],int b[3][3], int c[3][3])
{
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
{
c[i][j]=0;
for(int k=1;k<=2;k++)
c[i][j]=(c[i][j]+(1ll*a[i][k]*b[k][j])%mod)%mod;
}
}
void copiaza (int a[3][3],int b[3][3])
{
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
a[i][j]=b[i][j];
}
void putere(int x[3][3], int b[3][3],int n)
{
int c[3][3];
if(n==1)
{
copiaza(b,x); // b=a;
return;
}
putere(x,c,n/2);
inmultire(c,c,b);//c*c=b
if(n%2==1)
{
inmultire(b,a,c);
copiaza(b,c);
}
}
int main ()
{
cin>>n;
if(n==0)
{
cout<<0;
return 0;
}
if(n==1)
{
cout<<1;
return 0;
}
putere(a,b,n-1);
cout<<b[1][1]%mod;
return 0;
}