7-1 求组合数 (15分)


7-1 求组合数 (15分)
 

本题要求编写程序,根据公式Cnm​​=m!(nm)!n!​​算出从n个不同元素中取出m个元素(mn)的组合数。

建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double

输入格式:

输入在一行中给出两个正整数m和n(mn),以空格分隔。

输出格式:

按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。

输入样例:

2 7
 

输出样例:

result = 21

代码讲解: 如果直接使用阶层函数去算也可以,但是有几个缺点,第一个每次都重复相乘,第二个很可能组合中间某个数阶层的乘积就超过了double的界限,所以保险的使用了下面的方法


#include<stdio.h>
int main()
{
 int m,n;
 scanf("%d %d",&m,&n);
 double sum=1;
 int i;
 int k=1,j=1;
 for(i=1;i<=n;i++)
 {
  sum*=(double)i/(k*j);
  if(i<m)
  k++;
  else
  k=1;
  if(i<n-m)
  j++;
  else
  j=1;
  
 }
 printf("result = %.0f\n",sum);
 return 0;
 }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM