Pagini recente » Cod sursa (job #3367225) | Cod sursa (job #3367222) | Cod sursa (job #3366381) | Cod sursa (job #3366213) | Cod sursa (job #3366954)
#include <iostream>
#include <cstdio>
using namespace std;
#define MAXN 100
#define MAXC 3500
FILE *fin, *fout;
struct BigInt{
char v[MAXC];
int nrcif;
};
BigInt rezultat;
// a = a * b
void multiply(BigInt& a, int b){
int i, t;
t = i = 0;
while(i < a.nrcif || t > 0){
t = t + a.v[i] * b;
a.v[i] = t % 10;
t = t / 10;
i++;
}
if(i > a.nrcif){
a.nrcif = i;
}
}
void print(BigInt& a){
for(int i = a.nrcif - 1; i >= 0; i--){
fprintf(fout, "%d", a.v[i]);
}
}
int main() {
fin = fopen("patrate2.in", "r");
fout = fopen("patrate2.out", "w");
int n, i;
fscanf(fin, "%d", &n);
// Trebuie sa calculam n! * 2^(n^2)
memset(rezultat.v, 0, sizeof(rezultat.v));
rezultat.nrcif = 1;
rezultat.v[0] = 1;
for(i = 2; i <= n; i++){
multiply(rezultat, i);
}
for(i = 0; i < n * n; i++){
multiply(rezultat, 2);
}
print(rezultat);
fclose(fin);
fclose(fout);
return 0;
}