Pagini recente » Cod sursa (job #567931) | Cod sursa (job #219853) | Cod sursa (job #1049112) | Cod sursa (job #601967) | Cod sursa (job #2446792)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
const ll base = 1e15;
struct Huge {
vector <ll> v;
Huge(int a = 0) {
while(0 < a){
v.pb (a % base);
a /= base;
}
if(v.size () == 0)
v.pb (0);
}
Huge operator + (Huge const &a) const{
Huge result;
result.v.resize (max (v.size (), a.v.size ()) + 1, 0);
for(int i = 0; i < result.v.size () - 1; i++) {
if(i < v.size ())
result.v[i] += v[i];
if(i < a.v.size ())
result.v[i] += a.v[i];
if(base <= result.v[i]) {
result.v[i + 1] = result.v[i] / base;
result.v[i] %= base;
}
}
while(0 < result.v.size () && result.v.back () == 0)
result.v.pop_back ();
return result;
}
Huge operator - (Huge const &a) const{
Huge result;
result.v.resize (max (v.size (), a.v.size ()) + 1, 0);
for (int i = 0; i < result.v.size () - 1; i++) {
if (i < v.size ())
result.v[i] += v[i];
if (i < a.v.size ())
result.v[i] -= a.v[i];
if (result.v[i] < 0) {
result.v[i + 1]--;
result.v[i] += base;
}
}
while (0 < result.v.size () && result.v.back () == 0)
result.v.pop_back ();
return result;
}
void print () {
int k = v.size () - 1;
bool ok = 0;
if ((k == 0 && v[0] == 0) || k == -1) {
cout << "0\n";
return;
}
while (0 <= k){
for (ll i = base / 10; 1 <= i; i /= 10) {
if (0 < v[k] / i % 10)
ok = 1;
if (ok == 1)
cout << v[k] / i % 10;
}
k--;
}
cout << "\n";
}
bool operator < (Huge const &a) {
if (a.v.size () != v.size ())
return v.size () < a.v.size ();
for (int i = v.size () - 1; i >= 0; i--)
if (a.v[i] != v[i])
return v[i] < a.v[i];
}
Huge operator * (int const &a) {
Huge result;
result.v.resize (v.size () + 1);
for (int i = 0; i < v.size (); i++) {
result.v[i] += v[i] * a;
result.v[i + 1] = result.v[i] / base;
result.v[i] %= base;
}
while (result.v.back () >= base) {
ll t = result.v.back () / base;
result.v[v.size () - 1] %= base;
result.v.pb (t);
}
while (result.v.back () == 0)
result.v.pop_back ();
return result;
}
};
int main() {
int n;
freopen ("patrate2.in", "r", stdin);
freopen ("patrate2.out", "w", stdout);
cin >> n;
Huge ans (1);
for (int i = 1; i <= n; i++)
ans = ans * (i * 2);
for (int i = 1; i <= n * n - n; i++)
ans = ans * 2;
ans.print ();
return 0;
}