http://acm.hdu.edu.cn/showproblem.php?pid=2519
求C(n,m); 30的阶乘超出了__int64.
#include <iostream>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("2519in.txt","r",stdin);
#endif
int i,n,m,t,r;
scanf("%d",&t);
while (t--){
r=1;
scanf("%d%d",&n,&m);
if (n<m)
r=0;
else if (n==m||m==0)
r=1;
else {
for (i=0;i<m;i++){
r=r*(n-i);
r=r/(i+1);
}
}
printf("%d\n",r);
}
return 0;
}
本文介绍了一种计算组合数C(n,m)的方法,并通过C++代码实现,解决了当n较大时(如30!)传统整数类型无法直接表示的问题。该算法通过逐步计算并简化分子与分母来避免溢出。
1058

被折叠的 条评论
为什么被折叠?



