Pagini recente » Cod sursa (job #2311728) | Cod sursa (job #2038271) | Cod sursa (job #1140919) | Cod sursa (job #1386184) | Cod sursa (job #780846)
Cod sursa(job #780846)
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
#define base 100000
int A[10000], B[10000], C[10000], N;
void Inm(int *A, int val)
{
int i, T = 0;
for(i = 1; i <= A[0]; i++)
{
A[i] = A[i] * val + T;
T = A[i] / base;
A[i] %= base;
}
while(T) A[++A[0]] = T % base, T /= base;
}
void InmHuge()
{
int i, j, T = 0;
C[0] = A[0] + B[0] - 1;
for(i = 1; i <= A[0] + B[0]; i++) C[i] = 0;
for(i = 1; i <= A[0]; i++)
for(j = 1; j <= B[0]; j++)
C[i + j - 1] += A[i] * B[j];
for(i = 1; i <= C[0]; i++)
{
T = (C[i] += T) / base;
C[i] %= base;
}
if(T) C[++C[0]] = T;
}
int main()
{
freopen("patrate2.in", "r", stdin);
freopen("patrate2.out", "w", stdout);
int i;
scanf("%i", &N);
A[0] = A[1] = 1;
B[0] = B[1] = 1;
for(i = 2; i <= N; i++) Inm(A, i);
for(i = 1; i <= N * N; i++) Inm(B, 2);
InmHuge();
printf("%d", C[C[0]]);
for(i = C[0] - 1; i; i--) printf("%05d", C[i]);
return 0;
}