Pagini recente » Cod sursa (job #1730418) | Cod sursa (job #2140483) | Cod sursa (job #1938602) | Cod sursa (job #1734062) | Cod sursa (job #3140358)
#include <fstream>
using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");
const int DIGITS_MAX = 15828;
const int POWER = 28;
struct HugeNumber {
short digits = 0;
char d[DIGITS_MAX]{};
HugeNumber(int a) {
do
d[digits++] = a % 10;
while(a /= 10);
}
friend HugeNumber operator*(const HugeNumber b, const unsigned int a) {
HugeNumber ret(0);
ret.digits = 0;
int i = 0, carry = 0;
while(i < b.digits){
carry += b.d[i++] * a;
ret.d[ret.digits++] = carry % 10;
carry /= 10;
}
while(carry){
ret.d[ret.digits++] = carry % 10;
carry /= 10;
}
return ret;
}
friend void operator*=(HugeNumber &b, const unsigned int a) {
b = b * a;
}
void print(ofstream &fout) {
for(int i = digits - 1; i >= 0; --i)
fout.put(d[i] + '0');
fout.put('\n');
}
};
int main() {
int n;
HugeNumber ans(1);
fin >> n;
for(int i = 2; i <= n; ++i)
ans *= i;
for(int i = 0; i < n * n / POWER; ++i)
ans *= (1 << POWER);
ans *= (1 << (n * n % POWER));
ans.print(fout);
fin.close();
fout.close();
return 0;
}