7-48 求组合数 (15分)

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

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

输入格式:

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

输出格式:

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

输入样例:

2 7

 

输出样例:

result = 21

 

作者

颜晖

单位

浙江大学城市学院

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB


编译器 (1)

C (gcc)

#include <stdio.h>
double fact(int n);
int main(void)	//如果不需要从命令行中获取参数,请用int main(void);否则请用int main(int argc, char *argv[])
{
	int m,n;
	scanf("%d %d",&m,&n);	//	&

	double result;
	result=fact(n)/(fact(m)*fact(n-m));
	printf("result = %.0f",result);	// \n

	return 0;
}

double fact(int n)
{
	int i;
	double factorial=1.0;
	if(n==0){
		return 1.0;
	}
	for(i=2;i<=n;i++){
		factorial*=i;
	}
	return factorial;
}

 

  • 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
发出的红包

打赏作者

涛声依旧很冷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值