Cod sursa(job #755235)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 5 iunie 2012 08:37:25
Problema Nunta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
using namespace std;
int n;
int fib[3][215];

void Copie(int A[],int B[])
{
	int i;
	for(i=1;i<=A[0];i++)
		A[i]=0;
	A[0]=B[0];
	for(i=1;i<=B[0];i++)
		A[i]=B[i];
}

void Adunare(int A[],int B[])
{
	int i,t=0;
	for(i=1;i<=A[0] || i<=B[0] || t;i++,t/=10)
		A[i]=(t+=A[i]+B[i])%10;
	A[0]=i-1;
}

int main()
{
	int i;
	ifstream fin("nunta.in");
	fin>>n;
	fin.close();
	
	fib[0][0]=fib[0][1]=1;
	fib[1][0]=1;
	fib[1][1]=2;
	for(i=3;i<=n;i++)
	{
		Copie(fib[2],fib[1]);
		Adunare(fib[2],fib[0]);
		Copie(fib[0],fib[1]);
		Copie(fib[1],fib[2]);
	}
	
	ofstream fout("nunta.out");
	if(n==1)
		fout<<1<<"\n";
	else
	{
		if(n==2)
			fout<<2<<"\n";
		else
		{
			for(i=fib[1][0];i>0;i--)
				fout<<fib[1][i];
			fout<<"\n";
		}
	}
	fout.close();
	return 0;
}