# PBinfo #2925 – FactorialnHard – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dă numărul natural n. Să se afișeze \( {(n!)}^{n}  \).

Date de intrare
Programul citește de la tastatură numărul natural n.

Date de ieșire
Programul va afișa pe ecran \( {(n!)}^{n}  \).

Restricții și precizări

1 ≤ n ≤ 100.

Exemplu:
Intrare

3
Ieșire

216

## Cod sursă C++

```cpp
#include<bits/stdc++.h>
using namespace std;
string px(string num1, string num2)
{
    int n1=num1.size();
    int n2=num2.size();
    if(n1==0||n2==0)
       return "0";
    vector<int> rez(n1+n2,0);
    int i_n1=0;
    int i_n2=0;
    for(int i=n1-1;i>=0;i--)
    {
        int t=0;
        int n1=num1[i]-'0';
        i_n2=0;
        for(int j=n2-1;j>=0;j--)
        {
            int n2=num2[j]-'0';
            int sum=n1*n2+rez[i_n1+i_n2]+t;
            t=sum/10;
            rez[i_n1+i_n2]=sum%10;
            i_n2++;
        }
        if(t>0)
            rez[i_n1+i_n2]+=t;
        i_n1++;
    }
    int i=rez.size()-1;
    while(i>=0 && rez[i]==0)
       i--;
    if(i==-1)
       return "0";
    string s="";
    while(i>=0)
        s+=to_string(rez[i--]);
    return s;
}
int main()
{
    string s="1",ss="1";
	int n;
    cin>>n;
    if(n==1)
    {
        cout<<1;
        exit(0);
    }
	for(int i=2;i<=n;i++)
        s=px(s,to_string(i));
    for(int i=1;i<=n;i++)
        ss=px(s,ss);
    cout<<ss;
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2925)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2925/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2925/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
