Pagini recente » Cod sursa (job #1321547) | Cod sursa (job #1554485) | Cod sursa (job #1514380) | Cod sursa (job #2381531) | Cod sursa (job #1830786)
#include <iostream>
#include <cstdio>
using namespace std;
#define DIM 10005
int Factorial[DIM], Putere[DIM], Rez[DIM], N;
int main() {
freopen("patrate2.in","r",stdin);
freopen("patrate2.out","w",stdout);
// Calcul factorial
scanf("%d\n", &N);
Factorial[++Factorial[0]] = 1;
for(int i = 2; i <= N; ++i) {
int j = 1;
int cat = 0;
while(j <= Factorial[0] || cat) {
Factorial[j] = Factorial[j] * i + cat;
cat = Factorial[j] / 10;
Factorial[j] %= 10;
Factorial[0] = max(Factorial[0], j);
++j;
}
}
Putere[++Putere[0]] = 1;
for(int i = 1; i <= N * N; ++i) {
int j = 1;
int cat = 0;
while(j <= Putere[0] || cat) {
Putere[j] = Putere[j] * 2 + cat;
cat = Putere[j] / 10;
Putere[j] %= 10;
Putere[0] = max(Putere[0], j);
++j;
}
}
// Inmultire Putere * Factorial
for(int j = 1; j <= Factorial[0]; ++j) {
for(int i = 1; i <= Putere[0]; ++i) {
Rez[i + j - 1] += Putere[i] * Factorial[j];
}
}
int cat = 0;
for(int i = 1; cat || i <= Factorial[0] + Putere[0] - 1; ++i) {
Rez[i] += cat;
cat = Rez[i] / 10;
Rez[i] %= 10;
Rez[0] = max(Rez[0], i);
}
for(int i = Rez[0]; i > 0; --i) {
cout << Rez[i];
}
cout << '\n';
return 0;
}