Pagini recente » Cod sursa (job #1027654) | Cod sursa (job #305085) | Cod sursa (job #2183920) | Cod sursa (job #542757) | Cod sursa (job #2784703)
#include <stdio.h>
// a = value, unde value este intreg pe 32 biti
void set(char a[], int& na, int value) {
int prevna, i;
prevna = na;
if (value == 0) {
a[0] = 0;
na = 1;
} else {
na = 0;
while (value) {
a[na++] = value % 10;
value /= 10;
}
}
for (i = na; i < prevna; ++i)
a[i] = 0;
}
// a = a * b, unde b este intreg pe 32 biti
void multiply(char a[], int& na, int b) {
if (b == 0) {
a[0] = 0;
na = 1;
} else {
int t, i;
t = i = 0;
while (i < na || t > 0) {
t += b * a[i];
a[i] = t % 10;
t /= 10;
++i;
}
if (i > na)
na = i;
}
}
// printf(a);
void print(FILE* fout, char a[], int na) {
int i;
for (i = na - 1; i >= 0; --i)
fputc('0' + a[i], fout);
}
#define MAX_DIGITS 5000
char ans[MAX_DIGITS];
int noAns;
int main() {
FILE *fin, *fout;
fin = fopen("patrate2.in", "r");
fout = fopen("patrate2.out", "w");
int n, i;
fscanf(fin, "%d", &n);
set(ans, noAns, 1);
for (i = 2; i <= n; ++i)
multiply(ans, noAns, i);
for (i = 1; i <= n * n; ++i)
multiply(ans, noAns, 2);
print(fout, ans, noAns);
fclose(fin);
fclose(fout);
return 0;
}