Pagini recente » Cod sursa (job #2659915) | Cod sursa (job #2802957) | Cod sursa (job #3225942) | Cod sursa (job #2750407) | Cod sursa (job #380563)
Cod sursa(job #380563)
#include <cstdio>
#define MOD 666013
int K;
int A[3][3],PU[3][3],FCT[3][3];
void calcp();
void inmulteste(int E[3][3],int F[3][3]);
void valori();
int main()
{
freopen("kfib.in","r",stdin);
freopen("kfib.out","w",stdout);
scanf("%d",&K);
valori();
calcp();
inmulteste(PU,FCT);
printf("%d",PU[1][1]);
return 0;
}
void calcp()
{
while(K>1)
{
if(K%2)
inmulteste(PU,A);
inmulteste(A,A);
K=K/2;
}
}
void inmulteste(int E[3][3],int F[3][3])
{
int T[3][3];
T[1][1]=0,T[1][2]=0,T[2][1]=0,T[2][2]=0;
for(int l=1;l<=2;l++)
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
T[i][j]+=(E[i][l]*F[l][j])%MOD;
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
E[i][j]=T[i][j];
}
void valori()
{
PU[1][1]=1;PU[1][2]=1;PU[2][1]=1;PU[2][2]=1;
FCT[1][1]=1;
}