谁给个组合式C(X,Y)的函数,里面还得有阶乘,太麻烦了,谁有简单的办法

来源:百度知道 编辑:UC知道 时间:2024/08/20 12:54:19
谁给个组合式C(X,Y)的函数,里面还得有阶乘,太麻烦了,谁有简单的办法

利用公式:C(m,n)=m/n*C(m-1,n-1):
long C(long m, long n)
{
long result=1;
if (n>m-n)
{
n=m-n; //C(m,n)==C(m,n-m) 取较小的来计算
}
for (int i=1;i<=n;i++)
{
result*=(long)((double)(m-n+i)/i);//待解决 如何不用类型转化来防止不能整除的问题
}
return result;
}
int main()
{
long m,n;

scanf("%d%d",&m,&n);
printf("%ld",C(m,n));
return 0;
}