c语言实现大数卡特兰数
时间: 2023-11-25 18:06:05 浏览: 80
大数卡特兰数指的是计算卡特兰数时需要使用高精度计算的情况。以下是使用C语言实现大数卡特兰数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 1000
void multiply(int *a, int b) {
int carry = 0;
for (int i = 0; i < MAXN; i++) {
a[i] = a[i] * b + carry;
carry = a[i] / 10;
a[i] %= 10;
}
}
void divide(int *a, int b) {
int remainder = 0;
for (int i = MAXN - 1; i >= 0; i--) {
remainder = remainder * 10 + a[i];
a[i] = remainder / b;
remainder %= b;
}
}
void catalan(int n, int *result) {
memset(result, 0, sizeof(int) * MAXN);
result[0] = 1;
for (int i = 2 * n; i > n + 1; i--) {
multiply(result, i);
divide(result, i - n - 1);
}
}
int main() {
int n;
scanf("%d", &n);
int result[MAXN];
catalan(n, result);
int i = MAXN - 1;
while (i > 0 && result[i] == 0) i--;
for (; i >= 0; i--) printf("%d", result[i]);
printf("\n");
return 0;
}
```