Cod sursa(job #2878356)

Utilizator StefanSanStanescu Stefan StefanSan Data 26 martie 2022 16:38:28
Problema Patrate2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>

using namespace std;

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

int a[20001], b[20001], c[20001];

void inmultire(int A[], int B)
{
        int T = 0;
        for(int i = 1; i <= A[0]; i++)
        {
                T += A[i] * B;
                A[i] = T % 10;
                T /= 10;
        }
        while(T > 0)
        {
                A[++A[0]] = T % 10;
                T /= 10;
        }
}


void mult(int A[], int B[], int 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(){

        int n;

        in >> n;

        a[0] = 1;
        a[1] = 1;
        b[0] = 1;
        b[1] = 1;

        for(int i = 1; i <= n * n; i++)
                inmultire(a, 2);

        for(int i = 2; i <= n; i++)
                inmultire(b, i);

        mult(a, b, c);

        for(int i = c[0]; i >= 1; i--)
                cout << c[i];

        return 0;
}