Cod sursa(job #3133622)

Utilizator SSKMFSS KMF SSKMF Data 26 mai 2023 13:51:49
Problema Patrate2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>
#include <vector>
using namespace std;

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

// n! * 2^(n * n)

class Numar_Mare {
    private:
        vector <short> cifre;

    public:
        Numar_Mare (int numar) {
            do cifre.push_back(numar % 10); while(numar /= 10);
        }

        ~Numar_Mare () {
            cifre.clear();
        }

        Numar_Mare operator *= (int factor) {
            int transport = 0;
            for (unsigned int indice = 0 ; indice < cifre.size() ; indice++ , transport /= 10)
                cifre[indice] = (transport += cifre[indice] * factor) % 10;

            while (transport)
                cifre.push_back(transport % 10) , transport /= 10;

            return *this;
        }

        friend ofstream &operator << (ofstream &iesire , const Numar_Mare numar) {
            for (int indice = numar.cifre.size() - 1 ; indice >= 0 ; indice--)
                iesire << numar.cifre[indice];

            return iesire;
        } 
};

int main ()
{
    int lungime;
    cin >> lungime;

    Numar_Mare rezultat(1);
    for (int valoare = 1 ; valoare <= lungime ; valoare++)
        rezultat *= 2 * valoare;

    for (int indice = lungime + 1 ; indice <= lungime * lungime ; indice++)
        rezultat *= 2;

    cout << rezultat;
    cout.close(); cin.close();
    return 0;
}