Cod sursa(job #854637)

Utilizator alinaelenaFMI Colceag Alina alinaelena Data 13 ianuarie 2013 20:06:37
Problema Al k-lea termen Fibonacci Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#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]);
	}