hdu 1133(卡特兰数)
来源:互联网 发布:淘宝装修拓展编码大全 编辑:程序博客网 时间:2024/06/04 20:11
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1133
卡特兰数的应用:( C(m+n, n) - C(m+n, m+1) ) * m! * n! 化简即 (m+n)! * (m-n+1) / (m+1)
string处理比较方便。。。
View Code
1 #include<iostream> 2 #include<algorithm> 3 #include<string> 4 #include<vector> 5 using namespace std; 6 vector<string>vet; 7 8 string Mul(string &str,int n){ 9 string s="";10 int len=str.size();11 int c=0,l=0;12 for(int i=len-1;i>=0;i--){13 c=l+(str[i]-'0')*n;14 l=c/10;15 s+=c%10+'0';16 }17 while(l){18 s+=l%10+'0';19 l=l/10;20 }21 reverse(s.begin(),s.end());22 return s;23 }24 25 void Facs(){26 vet.push_back("0");27 vet.push_back("1");28 vet.push_back("2");29 string str="2";30 for(int i=3;i<=204;i++){31 str=Mul(str,i);32 vet.push_back(str);33 }34 }35 36 string Divide(string &str,int n){37 string s="";38 int len=str.size();39 int c=0,l=0;40 for(int i=0;i<=len-1;i++){41 c=l*10+str[i]-'0';42 l=c%n;43 c=c/n;44 if(c==0&&s.size()==0)continue;45 else s+=c+'0';46 }47 return s;48 }49 50 int main(){51 Facs();52 int n,m;53 int _case=1;54 while(~scanf("%d%d",&m,&n)){55 if(n==0&&m==0)break;56 printf("Test #%d:\n",_case++);57 if(m<n){58 printf("0\n");59 continue;60 }61 string str=vet[n+m];62 str=Mul(str,m-n+1);63 str=Divide(str,m+1);64 cout<<str<<endl;65 }66 return 0;67 }
0 0
- hdu 1133(卡特兰数)
- HDU 1133 卡特兰数
- hdu 1133(卡特兰数+大数乘除+阶乘)
- hdu 1133 Buy the Ticket(卡特兰数 + 高精度)
- hdu 1133 Buy the Ticket(卡特兰数)
- HDU 1133(卡特兰数;动态规划)
- hdu 1023 (卡特兰数)
- 卡特兰数(HDU 1023)
- HDU 1023 (卡特兰数)
- hdu 1023(大数+卡特兰数)
- HDU 5673 Robot(卡特兰数)
- hdu 5184 Brackets(卡特兰数)
- HDU 4828 Grids(卡特兰数)
- HDU 1023 卡特兰数
- HDU 3723卡特兰数
- hdu 3723 卡特兰数
- hdu 5184 卡特兰数
- hdu 1023 卡特兰数
- hdu 2136(最大素数因子)
- hdu 2501
- hdu 2519
- hdu 4514(并查集判环)
- hdu 2189
- hdu 1133(卡特兰数)
- hdu 4517
- hdu 4472
- hdu 4474
- hdu 4520+hdu 4522+hdu 4524(3月24号Tencent)
- hdu 1023
- dp学习笔记1
- dp学习笔记2
- hdu 1025(最长非递减子序列的n*log(n)求法)