Pagini recente » Cod sursa (job #2937836) | Cod sursa (job #1213151) | Cod sursa (job #1146016) | Cod sursa (job #573264) | Cod sursa (job #854637)
Cod sursa(job #854637)
#include<stdio.h>
int mat[3][3],a[3][3];
void matmult (int a[3][3],int b[3][3])
{
int c[3][3];
c[1][1]=a[1][1]*b[1][1]+a[1][2]*b[2][1];
c[1][2]=a[1][1]*b[2][1]+a[1][2]*b[2][2];
c[2][1]=a[2][1]*b[1][1]+a[2][2]*b[2][1];
c[2][2]=a[2][1]*b[2][1]+a[2][2]*b[2][2];
int i,j;
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);
int n;
scanf("%d",&n);
a[1][2]=a[2][1]=a[2][2]=1;
mat[1][1]=mat[2][2]=1;
n--;
while(n)
{
if (n&1)
matmult(mat,a);
matmult(a,a);
n=n>>1;
}
printf("%d",mat[2][2]);
}