Pagini recente » Cod sursa (job #1161349) | Cod sursa (job #319424) | Cod sursa (job #221113) | Cod sursa (job #990023) | Cod sursa (job #978314)
Cod sursa(job #978314)
#include<stdio.h>
#define mod 666013
using namespace std;
int k;
int sol[3][3],add[3][3];
void init()
{
add[1][2]=add[2][1]=add[2][2]=1;
sol[1][1]=sol[2][2]=1;
}
void up(int a[3][3],int b[3][3])
{
int aux[3][3];
int i,j,l;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
aux[i][j]=0;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
for(l=1;l<=2;l++)
aux[i][j]+=(1LL*a[i][l]*b[l][j])%mod,aux[i][j]%=mod;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
a[i][j]=aux[i][j];
}
void solve()
{
k--;
for(int i=0;(k>>i);i++)
{
if( ((k>>i)&1)==1 ) up(sol,add);
up(add,add);
}
}
int main()
{
freopen("kfib.in","r",stdin);
freopen("kfib.out","w",stdout);
scanf("%d",&k);
init();
solve();
if(k+1) printf("%d",sol[2][2]);
else printf("0");
fclose(stdin);
fclose(stdout);
return 0;
}