Pagini recente » Cod sursa (job #1376048) | Istoria paginii runda/croitorasul_cel_viteaz | Cod sursa (job #1528656) | Cod sursa (job #2983876) | Cod sursa (job #1910806)
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
int n;
int a[3][3];
int sol[3][3];
int aux[3][3];
void mul(int a[3][3],int b[3][3],int c[3][3])
{
int i,j,k;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++){
c[i][j]=0;
for(k=1;k<=2;k++)
c[i][j]=(c[i][j]+1LL*a[i][k]*b[k][j])%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);
scanf("%d",&n);
if(n<=2){
printf("1");
return 0;
}
a[1][2]=1;
a[2][1]=1;
a[2][2]=1;
sol[1][1]=sol[2][2]=1;
n--;
while(n)
{
if(n%2)
mul(sol,a,aux);
mul(a,a,aux);
n/=2;
}
printf("%d",sol[2][2]);
return 0;
}