Cod sursa(job #446217)

Utilizator wamfeverDobos Ionut wamfever Data 25 aprilie 2010 14:17:01
Problema Patrate2 Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<fstream>
#define LgNr 500
using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");
typedef int Hella[LgNr];
void mult(Hella H, unsigned long X)
{ 
     int i;
     unsigned long T=0;
 
     for (i=1;i<=H[0];i++)
     { 
         H[i]=H[i]*X+T;
         T=H[i]/10;
         H[i]=H[i]%10;
     }
     while (T)
     {       
             H[++H[0]]=T%10;
             T/=10;
     }
}

void plusHuge(Hella A, Hella B, Hella C)

{ 
     int i,j,T=0;
 
     C[0]=A[0]+B[0]-1;
     for (i=1;i<=A[0]+B[0];) C[i++]=0;
     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++)
     { 
         T=(C[i]+=T)/10;
         C[i]%=10;
     }
     if (T) C[++C[0]]=T;
}
int main()
{
    Hella Num1, Num2, Ans;
    int i,n;
    Num1[0]=1;
    Num1[1]=1;
    Num2[0]=1;
    Num2[1]=1;
    fin>>n;
    for(i=2;i<=n;i++)  mult(Num1, i);
    for(i=1;i<=n*n;i++) mult(Num2, 2);
    plusHuge(Num1, Num2, Ans);
    for(i=Ans[0];i>=1;--i)fout<<Ans[i];
}