Pagini recente » Cod sursa (job #523945) | Cod sursa (job #3274807) | Cod sursa (job #2732283) | Cod sursa (job #2184745) | Cod sursa (job #854693)
Cod sursa(job #854693)
#include<stdio.h>
#define mod 666013
long long mat[3][3],a[3][3];
void matmult (long long a[3][3],long long b[3][3])
{
int c[3][3],i,j;
for (i=1;i<=2;i++)
for (j=1;j<=2;j++)
c[i][j]=0 ;
int k;
for (i=1;i<=2;++i)
for (j=1;j<=2;++j)
for(k=1;k<=2;++k)
c[i][j]=(c[i][j]+(long long)(a[i][k]*b[k][j])%mod)%mod;
for (i=1;i<=2;i++)
for (j=1;j<=2;j++)
a[i][j]=c[i][j] ;
}
int main()
{
freopen("kfib.in","r",stdin);
freopen("kfib.out","w",stdout);
int n;
scanf("%d",&n);
a[1][2]=a[2][1]=a[2][2]=1;
mat[1][1]=mat[2][2]=1;
n--;
while(n)
{
if (n&1)
matmult(mat,a);
matmult(a,a);
n=n>>1;
}
printf("%lld",mat[2][2]);
}