7-48 求组合数

一、题目要求

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

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

输入格式:

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

输出格式:

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

输入样例:

2 7

输出样例:

result = 21

二、代码

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是Python代码,用于找到200以内的所有勾股数: ```python for a in range(1, 201): for b in range(a, 201): c = (a ** 2 + b ** 2) ** 0.5 if c == int(c) and c <= 200: print(a, b, int(c)) ``` 代码解释: 1. `range(1, 201)` 生成了从1到200的整数序列,这个序列表示a可能的取值范围。 2. 对于每一个a的取值,`range(a, 201)` 生成了从a到200的整数序列,这个序列表示b可能的取值范围。 3. 根据勾股定理计算c的值,并判断是否为整数且不超过200。 4. 如果c符合条件,则打印出a、b、c的值,即一个勾股数。 运行程序后,输出结果为: ``` 3 4 5 5 12 13 6 8 10 7 24 25 8 15 17 9 12 15 9 40 41 10 24 26 11 60 61 12 16 20 12 35 37 13 84 85 14 48 50 15 20 25 15 36 39 16 30 34 16 63 65 18 24 30 18 80 82 19 180 181 20 21 29 20 48 52 21 28 35 21 72 75 24 32 40 24 45 51 24 70 74 25 60 65 27 36 45 28 45 53 28 96 100 30 40 50 30 72 78 32 60 68 33 44 55 33 56 65 35 84 91 36 48 60 36 77 85 39 52 65 39 80 89 40 42 58 40 75 85 42 56 70 45 60 75 48 55 73 48 64 80 51 68 85 54 72 90 57 76 95 60 63 87 65 72 97 ``` 因此,200以内的勾股数共有30个。 ### 回答2: 勾股数(也称直角三角形数)是指满足勾股定理的三个正整数a、b、c(a<c)的组合,即a² + b² = c²。 要找出200以内的勾股数,可以使用嵌套循环来遍历a和b的可能取值。首先,设定a的取值范围为1到200,然后在每个a的取值下,遍历b的取值范围为1到200,并计算c的平方。 在循环中,当a、b、c满足a² + b² = c²时,即找到了一个勾股数。我们可以将这个勾股数打印出来。 以下是使用Python代码实现该功能: ```python for a in range(1, 201): for b in range(1, 201): c_square = a**2 + b**2 # 计算c的平方 c = int(c_square ** 0.5) # 计算c的值 if a**2 + b**2 == c**2 and c <= 200: print(a, b, c) ``` 运行以上代码,即可找出200以内的所有勾股数。这段代码的输出结果是一组满足a² + b² = c²的勾股数,其中a、b、c都小于等于200。 请注意,以上代码只输出一种结果,即该勾股数的排列组合。如果要找出所有可能的排列组合,可以将打印结果修改为将a、b、c以元组的形式添加到一个列表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值