实验2-4-7 求组合数 (15 分)
本题要求编写程序,根据公式
C
n
m
=
m
!
(
n
−
m
)
!
n
!
C_n^{m} =\frac{m!}{(n−m)!n!}
Cnm=(n−m)!n!m!
算出从n个不同元素中取出m
个元素(m≤n)
的组合数。
建议定义和调用函数fact(n)
计算n!
,其中n
的类型是int
,函数类型是double
。
输入格式:
输入在一行中给出两个正整数m和n(m≤n)
,以空格分隔。
输出格式:
按照格式“result = 组合数计算结果
”输出。题目保证结果在double
类型范围内。
输入样例:
2 7
输出样例:
result = 21
代码:
# include <stdio.h>
# include <stdlib.h>
double fact(int q) {
int i;
double value = 1;
for (i=1;i<=q;i++) {
value *= i;
}
return value;
}
int main() {
int m,n;
scanf("%d %d",&m,&n);
double result = fact(n) / (fact(m) * fact(n-m));
printf("result = %.0lf",result);
return 0;
}
提交截图:
解题思路:
这题得好好说一下了,同学,如果你代码提交的时候情况和下面一致:
而且一直显示你m == n/2 测试点2未通过
,恭喜你,只需要把double fact(int n)
中接收数值的变量value
类型换成double
就可以了,别问我怎么知道,问就是天赋异禀