标签:
1 3 12 -1
1 1 2 2 3 10 3 12 416024
void catalan() //求卡特兰数 { int i, j, len, carry, temp; a[1][0] = b[1] = 1; len = 1; for(i = 2; i <= 100; i++) { for(j = 0; j < len; j++) //乘法 a[i][j] = a[i-1][j]*(4*(i-1)+2); carry = 0; for(j = 0; j < len; j++) //处理相乘结果 { temp = a[i][j] + carry; a[i][j] = temp % 10; carry = temp / 10; } while(carry) //进位处理 { a[i][len++] = carry % 10; carry /= 10; } carry = 0; for(j = len-1; j >= 0; j--) //除法 { temp = carry*10 + a[i][j]; a[i][j] = temp/(i+1); carry = temp%(i+1); } while(!a[i][len-1]) //高位零处理 len --; b[i] = len; } }
#include <iostream> #include <stdio.h> using namespace std; long long int a[40]= {1,1}; void solve() { for(int n=2; n<37; n++) for(int i=0,j=n-1; i<n; i++,j--) a[n]+=a[i]*a[j]; } int main() { int n; solve(); for(int i=1; cin>>n; i++) { if(n==-1)break; printf("%d %d %lld\n",i,n,a[n]*2); } return 0; }
标签:
原文地址:http://blog.csdn.net/qq_28954601/article/details/51362277