Cod sursa(job #3182633)

Utilizator FlaviuuuFlaviu Flaviuuu Data 9 decembrie 2023 11:10:50
Problema Patrate2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <fstream>
using namespace std;
ifstream cin("patrate2.in");
ofstream cout("patrate2.out");
#define DIM 10005
int Factorial[DIM], Putere[DIM], Rez[DIM], N;
int main()
{
    cin>>N;
    Factorial[++Factorial[0]] = 1;

    for(int i = 2; i <= N; ++i) {
        int j = 1;
        int cat = 0;
        while(j <= Factorial[0] || cat) {
            Factorial[j] = Factorial[j] * i + cat;
            cat = Factorial[j] / 10;
            Factorial[j] %= 10;
            Factorial[0] = max(Factorial[0], j);
            ++j;
        }
    }

    Putere[++Putere[0]] = 1;

    for(int i = 1; i <= N * N; ++i) {
        int j = 1;
        int cat = 0;
        while(j <= Putere[0] || cat) {
            Putere[j] = Putere[j] * 2 + cat;
            cat = Putere[j] / 10;
            Putere[j] %= 10;
            Putere[0] = max(Putere[0], j);
            ++j;
        }
    }
     for(int j = 1; j <= Factorial[0]; ++j) {
        for(int i = 1; i <= Putere[0]; ++i) {
            Rez[i + j - 1] += Putere[i] * Factorial[j];
        }
    }
 int cat = 0;
    for(int i = 1; cat || i <= Factorial[0] + Putere[0] - 1; ++i) {
        Rez[i] += cat;
        cat = Rez[i] / 10;
        Rez[i] %= 10;
        Rez[0] = max(Rez[0], i);
    }
    for(int i = Rez[0]; i > 0; --i){
        cout<<Rez[i];
    }
    cout<<'\n';
    return 0;
}