Pagini recente » Cod sursa (job #2866618) | Cod sursa (job #1342290) | Cod sursa (job #1541948) | Cod sursa (job #1282871) | Cod sursa (job #790767)
Cod sursa(job #790767)
#include<cstdio>
using namespace std;
int mod,n;
struct str
{
long long a[3][3];
};
str ori(str a,str b)
{
str rez;
long long s,i,j,k;
for(i=1;i<=2;i++)
for(j=1;j<=2;j++)
{
s=0;
for(k=1;k<=2;k++)
s=s+a.a[i][k]*b.a[k][j];
rez.a[i][j]=s%mod;
}
return rez;
}
str pow(str a,int n)
{
str c,rez;
if(n==1) return a;
if(n%2==0)
{
c=pow(a,n/2);
rez=ori(c,c);
}
else
{
c=pow(a,n-1);
rez=ori(c,a);
}
return rez;
}
str mat,rez;
int main()
{
freopen("kfib.in","r",stdin);
freopen("kfib.out","w",stdout);
scanf("%d",&n);
mod=666013;
mat.a[1][1]=0;
mat.a[1][2]=1;
mat.a[2][1]=1;
mat.a[2][2]=1;
rez=pow(mat,n-2);
//rez=ori(mat,mat);
printf("%d\n",(rez.a[1][2]+rez.a[2][2])%mod);
return 0;
}