Cod sursa(job #3366954)

Utilizator MateiDiaconuDiaconu Matei Stefan MateiDiaconu Data 5 octombrie 2026 13:49:57
Problema Patrate2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <cstdio>

using namespace std;

#define MAXN 100
#define MAXC 3500

FILE *fin, *fout;

struct BigInt{
    char v[MAXC];
    int nrcif;
};

BigInt rezultat;

// a = a * b
void multiply(BigInt& a, int b){
    int i, t;

    t = i = 0;
    while(i < a.nrcif || t > 0){
        t = t + a.v[i] * b;
        a.v[i] = t % 10;
        t = t / 10;
        i++;
    }

    if(i > a.nrcif){
        a.nrcif = i;
    }
}

void print(BigInt& a){
    for(int i = a.nrcif - 1; i >= 0; i--){
        fprintf(fout, "%d", a.v[i]);
    }
}

int main() {
    fin = fopen("patrate2.in", "r");
    fout = fopen("patrate2.out", "w");

    int n, i;

    fscanf(fin, "%d", &n);

    // Trebuie sa calculam n! * 2^(n^2)

    memset(rezultat.v, 0, sizeof(rezultat.v));
    rezultat.nrcif = 1;
    rezultat.v[0] = 1;

    for(i = 2; i <= n; i++){
        multiply(rezultat, i);
    }

    for(i = 0; i < n * n; i++){
        multiply(rezultat, 2);
    }

    print(rezultat);

    fclose(fin);
    fclose(fout);
    return 0;
}