Cod sursa(job #765411)

Utilizator MtkMarianHagrSnaf MtkMarian Data 7 iulie 2012 15:45:42
Problema Patrate2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include<iostream>
#include<fstream>
using namespace std;


int main()
{
	ifstream f("patrate2.in");
	ofstream g("patrate2.out");

	int n,n2,i=0,aux;

	int *v,*doi,*final;

	unsigned long t=0;

	v=new int[3000];
	doi=new int[3500];
	final=new int[3500];

	f>>n;
//	cout<<"n"<<endl;
//	cout<<n<<endl;
	n2=n*n;

	aux=n;

	while(aux>=1)
	{
		i++;
		v[i]=aux%10;
		aux=aux/10;
		
	}


	v[0]=i;
	doi[0]=1;
	doi[1]=2;



	//n factorial
	for(int j=1;j<n;j++)
	{

		for( i=1;i<=v[0];i++)
		{
			v[i]=v[i]*j+t;
			t=v[i]/10;
			v[i]=v[i]%10;
		}
		while(t)
		{
			v[++v[0]]=t%10;		
			t=t/10;
		}
	}


	//doi la n2
	t=0;

		for(int j=1;j<n2;j++)
	{

		for( i=1;i<=doi[0];i++)
		{
			doi[i]=doi[i]*2+t;
			t=doi[i]/10;
			doi[i]=doi[i]%10;
		}
		while(t)
		{
			doi[++doi[0]]=t%10;		
			t=t/10;
		}
	}
		

//afisare n factorial si 2 la n2
	//cout<<" v[0] "<<v[0]<<endl;
	/////cout<<"produs"<<endl;
///	for(i=1;i<=v[0];i++)
//		cout<<v[i];

//	cout<<endl<<"doi[0] "<<doi[0]<<endl;
//	cout<<"DOi la puterea n2"<<endl;
//	for(i=1;i<=doi[0];i++)
	//	cout<<doi[i];

	//inmultire 

	final[0]=v[0]+doi[0]-1;
	for(i=1;i<=doi[0]+v[0];i++)final[i]=0;

   for( i=1;i<=doi[0];i++)
	   for(int j=1;j<=v[0];j++)
		   final[i+j-1]+=doi[i]*v[j];
   for(i=1;i<=final[0];i++)
   {
	   final[i]+=t;
	   t=final[i]/10;
	   final[i]=final[i]%10;
   }
   if(t)final[++final[0]]=t;

  // cout<<" final[0] "<<final[0]<<endl;
  // cout<<"afisare final "<<endl;
   for(i=final[0];i>=1;i--)
	g<<final[i];


	//cout<<endl;
	//rez=pow(2,(double)n2);
	//cout<<rez<<endl;
	//system("pause");
	return 0;
}