例题链接:HDU1023:https://vjudge.net/problem/HDU-1023
具体解体思路可以看Catalan数的基础介绍篇(虽然这个题也很基础)
#include <cstdio> #include <cstring> #include <string> #include <cmath> #include <iostream> #include <algorithm> #include <vector> #include <stack> #include <sstream> #include <map> #include <set> #include <queue> #include <stdlib.h> #define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; typedef long long ll; int a[105][100]; void multiply(int a[],int b) { int x=0; for (int i=99;i>=0;i--) { x=x+a[i]*b; a[i]=x%10000; x=x/10000; } } void divide(int a[],int b) { int x=0; for (int i=0;i<=99;i++) { x = x*10000 + a[i]; a[i]=x/b; x=x%b; } } int main() { a[1][99]=1; for (int i=2;i<=100;i++) //打表 { memcpy(a[i], a[i-1], sizeof(a[i-1])); multiply(a[i],4*i-2); divide(a[i],i+1); } int n; while(cin >> n) { int i; for (i=0;i<=99;i++) { if(a[n][i]==0) continue; else break; } cout << a[n][i]; for (i=i+1;i<=99;i++) { printf("%04d",a[n][i]); } cout << endl; } return 0; }