Pagini recente » Cod sursa (job #1292225) | Cod sursa (job #2058809) | Cod sursa (job #2116933) | Cod sursa (job #2932609) | Cod sursa (job #3326346)
#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;
}