Pagini recente » Cod sursa (job #892330) | Cod sursa (job #2447914) | Cod sursa (job #772848) | Cod sursa (job #1566587) | Cod sursa (job #2786142)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("patrate2.in");
ofstream cout ("patrate2.out");
struct strhuge {
int ncif;
vector <int> vcif;
};
void afis(strhuge A) {
int i;
for (i = A.ncif - 1; i >= 0; i--)
cout << A.vcif[i];
}
strhuge inmultire_huge(strhuge A, int val) {
int t = 0, ncur, i;
ncur = A.ncif;
for (i = 0; i < ncur; i++) {
t = t + val * A.vcif[i];
A.vcif[i] = t % 10;
t /= 10;
}
while (t > 0) {
A.vcif.push_back(t % 10);
A.ncif++;
t /= 10;
}
return A;
}
static inline int lsb(int val) { /// least significant bit
return val & (-val);
}
strhuge inmult_put2(strhuge A, int exp) {
while (exp > 0) {
A = inmultire_huge(A, (1 << lsb(exp)));
exp -= lsb(exp);
}
return A;
}
int main() {
int n, i;
strhuge sol;
cin >> n;
sol.ncif = 1;
sol.vcif.push_back(1);
for (i = 1; i <= n; i++)
sol = inmultire_huge(sol, i);
sol = inmult_put2(sol, n * n);
afis(sol);
return 0;
}