Cod sursa(job #1392269)

Utilizator daniel.grosuDaniel Grosu daniel.grosu Data 18 martie 2015 15:48:07
Problema Patrate2 Scor 100
Compilator cpp Status done
Runda pregatire_ori(10/11) Marime 0.9 kb
#include <fstream>
#include <string.h>

#define NMAX 10000

using namespace std;

ifstream fin("patrate2.in");
ofstream fout("patrate2.out");

int REZ[NMAX];

// Inmultirea unui nr mare cu nr mare

void mul(int A[], int B[])
{
    int i,j,t,C[NMAX];
    memset(C,0,sizeof(C));
    for(i=1; i<=A[0]; ++i)
    {
        for(t=0, j=1; j<=B[0] || t; j++, t/=10)
            C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
        if(i+j-2>C[0]) C[0]=i+j-2;
    }
    memcpy(A,C,sizeof(C));
}

// Inmultirea nr mare cu nr mic

void mul(int A[], int B)
{
    int i,t = 0;
    for(i = 1; i<=A[0] || t; i++, t/=10)
        A[i]= (t += A[i]*B) % 10;
    A[0]=i-1;
}
int main() {
    int n;
    fin>>n;
    REZ[0]=REZ[1]=1;
    for(int i=1; i<=n; ++i)
        mul(REZ, i);
    for(int i=1; i<=n*n; ++i)
        mul(REZ, 2);
    for(int i=REZ[0]; i>0; --i)
        fout<<REZ[i];
    return 0;
}