实验2-4-7 求组合数 (15 分)

本题要求编写程序,根据公式
C ​ n ​ m ​ ​ = m ! ( n − m ) ! n ! C​_n^{​m}​​ =\frac{m!}{(n−m)!n!} Cnm=(nm)!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就可以了,别问我怎么知道,问就是天赋异禀

posted @ 2021-03-06 10:35  lures  阅读(250)  评论(0)    收藏  举报