Cod sursa(job #483645)

Utilizator andunhillMacarescu Sebastian andunhill Data 9 septembrie 2010 16:03:30
Problema Patrate2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
using namespace std;
ifstream f("patrate2.in");
ofstream g("patrate2.out");
int n[300],ii[5],c[300],d[300],e[2];
void mult(int a[],int b[])
{	int t=0,i,j,sol;
	for(i=1;i<=a[0]+b[0];c[i]=0,i++);
	c[0]=a[0]+b[0]-1;
	for(i=1;i<=a[0];i++)
		for(j=1;j<=b[0];j++)
			c[i+j-1]+=(a[i]*b[j]);
	for(i=1;i<=c[0];i++)
		sol=c[i]+t , c[i]=sol%10 , t=sol/10;
	if(t) c[++c[0]]=t;
	for(i=1;i<=c[0];a[i]=c[i],i++); 
	a[0]=c[0];
}
void pow(int N)
{	e[0]=1; e[1]=2;
	d[0]=1; d[1]=1;
	for(int i=1;i<=N;i++)
	{	mult(d,e);
	}
}
int main()
{	int N,i,x,aux;
	f>>N;
	n[0]=n[1]=1;
	for(i=1;i<=N;i++)
	{	aux=i; x=1;
		while(aux)  ii[x++]=aux%10 , aux/=10;
		ii[0]=x-1;
		mult(n,ii);
	}
	pow(N*N);
	mult(n,d);
	for(i=n[0];i>=1;g<<n[i],i--);
	f.close();
	g.close();
	return 0;
}