Pagini recente » Cod sursa (job #1953377) | Cod sursa (job #1887884) | Cod sursa (job #96910) | Cod sursa (job #2876724) | Cod sursa (job #801442)
Cod sursa(job #801442)
#include<stdio.h>
FILE *f = fopen("kfib.in","r");
FILE *g = fopen("kfib.out","w");
#define MaxMat 5
#define Mod 666013
int N;
int A[MaxMat][MaxMat],M[MaxMat][MaxMat];
void citire(void)
{
fscanf(f,"%d",&N);
}
void Mul(int A[MaxMat][MaxMat],int B[MaxMat][MaxMat])
{
int C[MaxMat][MaxMat];
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
C[i][j] = 0;
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
for(int k=1;k<=2;k++)
C[i][j] += (1LL*A[i][k]*B[k][j])%Mod;
for(int i=1;i<=2;i++)
for(int j=1;j<=2;j++)
A[i][j] = C[i][j]%Mod;
}
void Initializare(void)
{
M[1][1] = M[2][1] = M[1][2] = 1;
M[2][2] = 0;
A[1][1] = A[2][2] = 1;
}
void Afisare(int M[MaxMat][MaxMat])
{
for(int i=1;i<=2;i++,printf("\n"))
for(int j=1;j<=2;j++)
printf("%d ",M[i][j]);
printf("\n");
}
int main()
{
citire();
Initializare();
N ++;
for(int i=0;(1<<i) <= N;i++)
{
if(N & (1<<i))
Mul(A,M);
Mul(M,M);
}
fprintf(g,"%d ",A[2][2]);
}