计算组合数C=m!/ n!(m-n)!
时间: 2023-08-29 20:06:28 浏览: 587
组合数C可以用以下公式计算:
C = m! / (n! * (m - n)!)
其中,m! 表示 m 的阶乘,即 m 的所有正整数乘积。
假设您想要计算 C = 5! / (2! * (5 - 2)!):
首先计算 m 的阶乘,即 5! = 5 * 4 * 3 * 2 * 1 = 120。
然后计算 n 的阶乘,即 2! = 2 * 1 = 2。
最后计算 (m - n) 的阶乘,即 (5 - 2)! = 3! = 3 * 2 * 1 = 6。
将这些值代入公式,得到 C = 120 / (2 * 6) = 10。
所以,组合数 C = 10。
相关问题
用c语言简单实现s=m!/(m-n)!n!
可以使用循环来实现阶乘和组合数的计算,以下是使用C语言简单实现该公式的代码:
```c
#include <stdio.h>
int main() {
int m, n, i;
unsigned long long mFactorial = 1, nFactorial = 1, mMinusNFactorial = 1, s;
printf("请输入m和n的值(中间用空格隔开):");
scanf("%d %d", &m, &n);
for (i = 1; i <= m; i++) {
mFactorial *= i; // 计算m的阶乘
if (i <= n) {
nFactorial *= i; // 计算n的阶乘
}
if (i <= m - n) {
mMinusNFactorial *= i; // 计算m-n的阶乘
}
}
s = mFactorial / (mMinusNFactorial * nFactorial); // 计算组合数
printf("%d个元素中取%d个元素的组合数为:%llu\n", m, n, s);
return 0;
}
```
在该程序中,使用循环计算m、n和m-n的阶乘,并根据组合数学公式计算组合数s。最后输出计算结果。需要注意的是,当m和n的值较大时,可能会导致计算结果溢出,因此可以使用unsigned long long类型来存储计算结果。
编写求n!的函数fint n),在主函数中输 入两个整数m、口,然后调用函数求:C=m!/n!(m-n)!
好的,以下是代码实现:
```c
#include <stdio.h>
int fact(int n) {
if (n == 0 || n == 1) {
return 1;
}
else {
return n * fact(n-1);
}
}
int main() {
int m, n;
printf("请输入两个整数m和n:");
scanf("%d %d", &m, &n);
int c = fact(m) / (fact(n) * fact(m-n));
printf("C = %d\n", c);
return 0;
}
```
首先,我们定义了一个求阶乘的函数 `fact`,采用递归的方式实现。然后在主函数中,输入两个整数 `m` 和 `n`,调用 `fact` 函数求出 `m!`、`n!` 和 `(m-n)!`,最终计算并输出组合数 `C`。
阅读全文
相关推荐
















