Cod sursa(job #591341)

Utilizator Agent008Cristi Poputea Agent008 Data 23 mai 2011 19:47:17
Problema Patrate2 Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 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[10000],int v[10000],int k,int x);
void slap(int a[10000],int b,int &n);
int z[10000],c[10000];
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[1]=1;n=1;
	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=1;i<=n;i++)
	{	g<<z[i];
		cout<<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[10000],int v[10000],int k,int x)
{
	int i;
	if(x==1)
		for(i=x;i<=k;i++)
		{	w[i]=v[i];v[i]=0;}
	else
		for(i=x+1;i<=k;i++)
		{	w[i]=v[i-1];v[i-1]=0;}
}
void slap(int a[10000],int b,int &n)
{
	int j,m=0,l,k,aux;
	aux=b;
		while(aux)
		{	m++;
			aux/=10;
		}
	k=m+n;
	k--;
	while(b)
	{	l=k;
		for(j=n;j>=1;j--)
		{	/*c[l]+=(b%10*a[j]);
			if(c[l]>9)
				mult(c[l],l);
			l--;*/
			c[l]+=(b%10*a[j]);
			if(c[l]>9)
			{	aux=c[l];
				c[l]=c[l]%10;
				aux/=10;
				c[l-1]+=aux;
			}
			l--;
		}
		k--;
		b/=10;
	}
	k=m+n;
	k--;
	if(c[0]==0)
	{	copiere(a,c,k,1);
		k--;
	}
	else
	{	k++;
		copiere(a,c,k,0);k--;}
	k++;
	n=k;
}