hdu 1133(卡特兰数)
2013-03-23 17:30
288 查看
题目链接: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
卡特兰数的应用:( C(m+n, n) - C(m+n, m+1) ) * m! * n! 化简即 (m+n)! * (m-n+1) / (m+1)
string处理比较方便。。。
View Code
#include<iostream> #include<algorithm> #include<string> #include<vector> using namespace std; vector<string>vet; string Mul(string &str,int n){ string s=""; int len=str.size(); int c=0,l=0; for(int i=len-1;i>=0;i--){ c=l+(str[i]-'0')*n; l=c/10; s+=c%10+'0'; } while(l){ s+=l%10+'0'; l=l/10; } reverse(s.begin(),s.end()); return s; } void Facs(){ vet.push_back("0"); vet.push_back("1"); vet.push_back("2"); string str="2"; for(int i=3;i<=204;i++){ str=Mul(str,i); vet.push_back(str); } } string Divide(string &str,int n){ string s=""; int len=str.size(); int c=0,l=0; for(int i=0;i<=len-1;i++){ c=l*10+str[i]-'0'; l=c%n; c=c/n; if(c==0&&s.size()==0)continue; else s+=c+'0'; } return s; } int main(){ Facs(); int n,m; int _case=1; while(~scanf("%d%d",&m,&n)){ if(n==0&&m==0)break; printf("Test #%d:\n",_case++); if(m<n){ printf("0\n"); continue; } string str=vet[n+m]; str=Mul(str,m-n+1); str=Divide(str,m+1); cout<<str<<endl; } return 0; }
相关文章推荐
- Hdu 1133 Buy the ticket <卡特兰数+大数处理>
- hdu 1133(卡特兰数变形)
- 【HDU 1133】 Buy the Ticket (卡特兰数)
- hdu 1133 Buy the Ticket(卡特兰数+大整数)
- HDU 1133 Buy the Ticket 50,100钱买票,大数乘除法,卡特兰数变形
- hdu 1133 卡特兰数的应用 java水大数
- HDU 1133 卡特兰数
- HDU 1133 Buy the Ticket【卡特兰数】
- HDU 1133 Buy the Ticket 卡特兰数
- Hdu 1133 Buy the Ticket[卡特兰数小变形]
- 【HDU 1133】 Buy the Ticket (卡特兰数)
- HDU 1133(卡特兰数;动态规划)
- HDU 1133 Buy the Ticket 卡特兰数 JAVA
- HDU 1133 Buy the Ticket 卡特兰数
- hdu 1133 Buy the Ticket 卡特兰数+递推+java
- hdu 1133 Buy the Ticket(卡特兰数 + 高精度)
- hdu 1133 Buy the Ticket 卡特兰数+递推+java
- hdu 1133(卡特兰数+大数乘除+阶乘)
- hdu 1133(卡特兰数)
- HDOJ HDU 1023 1130 1133 1134 2067 ACM 1023 1130 1133 1134 2067 IN HDU ( 卡特兰数 专题 catalan )