Cod sursa(job #741546)

Utilizator Tase_CCapalna Tanase Tase_C Data 26 aprilie 2012 13:38:01
Problema Patrate2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
using namespace std;
fstream fin("patrate2.in",ios::in);
fstream fout("patrate2.out",ios::out);
int c,n,aux,vp[50000],vf[50000],i,j,t,k,l,vr[50000],x;
int main(){
	fin>>n;k=1;vf[1]=1;
	for(i=2;i<=n;i++){
		for(j=1;j<=k;j++){
			vf[j]=vf[j]*i+t;
			t=vf[j]/10;
			vf[j]=vf[j]%10;
		}
		while(t){
			k++;vf[k]=t%10;
			t/=10;
		}
	}
	vp[1]=1;l=k;k=1;n=n*n;
	for(i=1;i<=n;i++){
		for(j=1;j<=k;j++){
			vp[j]=vp[j]*2+t;
			t=vp[j]/10;
			vp[j]=vp[j]%10;
		}
		while(t){
			k++;vp[k]=t%10;
			t/=10;
		}
	}	
//	memset(vr,sizeof(vr),0);
	for(i=1;i<=l;i++){
		for(j=1;j<=k;j++){
			vr[j+i-1]+=vp[j]*vf[i]+t;
			t=vr[j+i-1]/10;
			vr[j+i-1]%=10;
		}
		while(t){
			vr[j+i-1]+=t;
			t=vr[j+i-1]/10;
		    vr[i+j-1]%=10;
			j++;
		}
		if(aux<j)aux=j;
	}
	if(vr[k+l]) fout<<vr[k+l];
	for(i=k+l-1;i>0;i--) fout<<vr[i];
	//fout<<endl<<vr[1];
	fin.close();fout.close();
	return 0;
}