Cod sursa(job #3326346)

Utilizator milena.vttLatea Milena milena.vtt Data 28 noiembrie 2025 11:34:30
Problema Patrate2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <bits/stdc++.h>
using namespace std;

struct nr
{
  vector <int> v;   
};

nr adunare( nr a, nr b)
{
    int carry=0;
    nr c;
    
    c.v.resize(max(a.v.size(), b.v.size()), 0);
    
    for(int i=0; i<c.v.size(); i++)
    {
        c.v[i]+=carry;
        
        if(i<a.v.size())
            c.v[i]+=a.v[i];
        if(i<b.v.size())
            c.v[i]+=b.v[i];
        if(c.v[i]>=10)
        {
            c.v[i]-=10;
            carry=1;
        }
        else
            carry=0;
    }
    
    if(carry==1)
    {
        c.v.push_back(1);
        carry=0;
    }
    return c;
}

void mult(nr &a, int x)
{
    int carry=0;
    for(int i=0; i<a.v.size(); i++)
    {
        a.v[i]*=x;
        a.v[i]+=carry;
        carry=a.v[i]/10;
        a.v[i]%=10;
    }
    while(carry>0)
    {
        a.v.push_back(carry%10);
        carry/=10;
    }
}

int main()
{
    ifstream cin("patrate2.in");
    ofstream cout("patrate2.out");
    int long long n;
    nr x;
    x.v.resize(1);
    x.v[0]=1;
    cin >> n;
    for(int i=0; i<n*n; i++)
        x=adunare(x, x);
    
    for(int i=2; i<=n; i++)
        mult(x, i);
    
    for(int i=x.v.size()-1; i>=0; i--)
        cout << x.v[i];

    return 0;
}