Cod sursa(job #508397)

Utilizator ms-ninjacristescu liviu ms-ninja Data 8 decembrie 2010 07:28:25
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>
using namespace std;
#define dim 100000
long v[dim], j, cifre,n, rez, i;

void mare(long x, long a[dim])
{
		j=v[0];
		cifre=1;
		while(j>0)
		{
			a[cifre]=a[cifre]*x;
			++cifre;
			--j;
		}
		a[0]=cifre-1;
		for(j=1;j<=a[0];++j)
			while(a[j]>9)
				{
					a[j+1]+=a[j]/10;
					a[j]%=10;
				}
		
		
		if(a[cifre+1]!=0)
			++a[0];
		while(a[a[0]+1]!=0)
			{
				while(a[a[0]+1]>9)
				{
					a[a[0]+2]+=a[a[0]+1]/10;
					a[a[0]+1]%=10;
				}
					
				++a[0];
			}
		
}



int main()
{
	
	freopen ("patrate2.in" , "r" , stdin);
	freopen ("patrate2.out" , "w", stdout);
	scanf("%d" , &n);
	rez=n*n;
	v[0]=1;
	v[1]=1;
	for(i=10;i<=rez;i+=10)
		mare(1024,v);
	
	
	
	if(rez%10==1)
		mare(2,v);
	else
	if(rez%10==2)
		mare(4,v);
	else
	if(rez%10==3)
		mare(8,v);
	else
	if(rez%10==4)
		mare(16,v);
	else
	if(rez%10==5)
		mare(32,v);
	else
	if(rez%10==6)
		mare(64,v);
	else
		if(rez%10==7)
		mare(128,v);
	else
		if(rez%10==8)
		mare(256,v);
	else
		if(rez%10==9)
		mare(512,v);
	
		
		
	for(i=2;i<=n;++i)
		mare(i,v);	
	
		
		
	for(i=v[0];i>=1;--i)
		printf("%ld", v[i]);
	
	
	

		
		
	return 0;
}