Cod sursa(job #3155698)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 9 octombrie 2023 13:20:15
Problema Patrate2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>

using namespace std;

const int NrLen = 10000;

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

struct HugeNumber{
    char nr[NrLen + 5];
    int lg = 0;
};

void init(HugeNumber &a, int nr){
    int preva;

    preva = a.lg;
    a.lg = 0;

    if(nr == 0){
        a.nr[0] = 0;
        a.lg = 0;
    }
    else{
        while(nr){
            a.nr[a.lg++] = nr % 10;
            nr /= 10;
        }
    }

    for(int i = a.lg; i < preva; i++){
        a.nr[i] = 0;
    }
}

inline void produs(HugeNumber a, int b, HugeNumber &p){
    int t = 0;

    p.lg = a.lg;
    for(int i = 0; i < p.lg; i++){
        t += a.nr[i] * b;
        p.nr[i] = t % 10;
        t /= 10;
    }

    while(t > 0){
        p.nr[p.lg] = t % 10;
        p.lg++;
        t /= 10;
    }
}

void afis(HugeNumber a){
    for(int i = a.lg - 1; i >= 0; i--){
        fout << int(a.nr[i]);
    }
}

int main(){
    int n;
    HugeNumber rez;

    fin >> n;

    ///formula: 2^(n*n) * n!
    init(rez, 1);
    for(int i = 1; i <= n; i++){
        produs(rez, i, rez);
    }
    for(int i = 1; i <= n * n; i++){
        produs(rez, 2, rez);
    }

    afis(rez);

    return 0;
}