Pagini recente » Cod sursa (job #1726442) | Cod sursa (job #2124808) | Cod sursa (job #211528) | Cod sursa (job #1684732) | Cod sursa (job #442805)
Cod sursa(job #442805)
#include <cstdio>
#include <cstring>
int n,a[3][3],b[3][3],c[3][3],f[2];
void inmultire() {
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]+=a[i][k]*b[k][j];
}
}
void putere(int n) {
int i;
if(n<=1) {
memcpy(c,a,sizeof(a));
return;
}
memcpy(b,a,sizeof(a));
inmultire();
if(n==2) return;
for(i=2; i<=n; i++) {
memcpy(a,c,sizeof(c));
inmultire();
}
}
int main()
{
FILE *ff=fopen("kfib.in","r");
FILE *g=fopen("kfib.out","w");
int rez[2]={0,0};
f[0]=0;
f[1]=1;
a[1][1]=0;
a[1][2]=1;
a[2][2]=1;
a[2][1]=1;
fscanf(ff,"%d",&n);
putere(n);
/*for(int i=1; i<=2; i++) {
for(int j=1; j<=2; j++) printf("%d ",a[i][j]);
printf("\n");
}*/
rez[0]=c[0][0]*f[0]+c[1][0]*f[1];
rez[1]=c[0][1]*f[0]+c[1][1]*f[1];
fprintf(g,"%d",rez[1]);
return 0;
}