Cod sursa(job #591102)

Utilizator Agent008Cristi Poputea Agent008 Data 22 mai 2011 12:58:10
Problema Patrate2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include<iostream.h>
#include<fstream.h>
#include<math.h>
fstream f("patrate2.in",ios::in), g("patrate2.out",ios::out);
void mult(int p,int x);
void copiere(int w[500],int v[500],int k,int x);
void slap(int a[500],int b,int &n);
int z[500],c[500];
int main()
{
	//long long i,n,k,l,o,t=1,p=1;
	//f>>n;
	/*if(n==1)
		cout<<"2";
	else
		if(n==2)
		{	cout<<"32";}
		else
		{	k=1;l=2;
			for(i=3;i<=n;i++)
			{	l=4*l;
				k*=2;
				l-=k;
			}
			cout<<l<<" "<<k<<" ";
			k=pow(n,2);
			k=pow(k,2);
			k=l*k;
			g<<k;
			cout<<k;
		}*/
	/*int p=1,t,n,i;
	f>>n;
	for(i=1;i<=n;i++)
		p*=i;
	t=pow(2,n*n);
	t*=p;
	cout<<t<<endl;*/
	int i,n,k;
	long long p=1;
	z[0]=1;n=0;
	f>>k;
	for(i=1;i<=k;i++)
	{	slap(z,i,n);}
	for(i=1;i<=k*k;i++)
		slap(z,2,n);
	for(i=0;i<=n;i++)
		g<<z[i];
	return 0;
}
void mult(int p,int x)
{
	c[x]=p%10;
	p/=10;c[x-1]+=p;
	if(c[x-1]>9)
		mult(c[x-1],x-1);
}
void copiere(int w[500],int v[500],int k,int x)
{
	int i;
	if(x==1)
		for(i=x;i<=k;i++)
		{	w[i-1]=v[i];v[i]=0;}
	else
		for(i=x-1;i<=k;i++)
		{	w[i]=v[i];v[i]=0;}
}
void slap(int a[500],int b,int &n)
{
	int j,m=0,l,k,aux;
	aux=b;
		while(aux)
		{	m++;
			aux/=10;
		}
	k=m+n;
	while(b)
	{	l=k;
		for(j=n;j>=0;j--)
		{	c[l]+=(b%10*a[j]);
			if(c[l]>9)
				mult(c[l],l);
			l--;
		}
		k--;
		b/=10;
	}
	k=m+n;
	if(c[0]==0)
	{	copiere(a,c,k,1);
		k--;
	}
	else
	{	copiere(a,c,k,0);}
	n=k;
}