hdu 1023 Train Problem II(卡特兰数)

来源:互联网 发布:汽配通软件下载 编辑:程序博客网 时间:2024/05/28 09:31

递推关系式:Cn=(4*n-2)/(n+1)*Cn-1

#include<iostream>#include<cstring> #include<cstdio>#include<algorithm>using namespace std;int num[110][110];void fun(){int i,j,k,t,len,v;num[1][0]=1,num[2][0]=2;for(k=0,i=3;i<=100;i++){for(j=0;j<=k;j++){//先做乘法 num[i][j]+=(4*i-2)*num[i-1][j];if(num[i][j]>9&&j==k){k++;}if(num[i][j]>9){num[i][j+1]+=num[i][j]/10;num[i][j]%=10;}}len=k,v=t=0;while(!num[i][len]) len--;for(;len>=0;len--){//再做除法 v=num[i][len]+t*10;//printf("%d\n",v);num[i][len]=v/(i+1);t=v%(i+1);}}}int main(){int n,i,j;fun();while(~scanf("%d",&n)){for(i=100;i>=0&&num[n][i]==0;i--);for(;i>=0;i--){printf("%d",num[n][i]);}printf("\n");}return 0;}



0 0
原创粉丝点击