C++ 函数实现组合数计算 B C D 传统题 1000ms 256MiB 题目描述 已知组合数的计算公式为: � ( � , � ) = � ! � ! ( � − � ) ! C(m,r)= r!(m−r)! m! ,其中!表示阶乘,请你使用函数分别实现阶乘函数合组合数计算,最后将计算结果返回给主函数输出。 输入格式 输入两个正整数 � m 和 � r。 输出格式 输出组合数。 样例 输入数据 1 8 1 Copy 输出数据 1 8 Copy 提示 样例1解释 当 � = 8 , � = 1 m=8,r=1 时, � ( 8 , 1 ) = 8 ! 1 ! ( 8 − 1 ) ! = 40320 1 × 5040 = 8 C(8,1)= 1!(8−1)! 8! = 1×5040 40320 =8 数据范围 1 ≤ � , � ≤ 10 1≤m,r≤10
时间: 2024-01-05 07:03:02 浏览: 110
组合算法|C++实现
5星 · 资源好评率100%
好的,这是一道传统的组合数计算题目,我们可以分别实现阶乘函数和组合数计算函数来解决这个问题。以下是一个可能的 C++ 实现:
```cpp
#include <iostream>
// 阶乘函数
int factorial(int n) {
int res = 1;
for (int i = 1; i <= n; i++) {
res *= i;
}
return res;
}
// 组合数计算函数
int combination(int m, int r) {
return factorial(m) / (factorial(r) * factorial(m - r));
}
int main() {
int m, r;
std::cin >> m >> r;
std::cout << combination(m, r) << std::endl;
return 0;
}
```
以上代码可能会超时,因为阶乘的计算量很大,可以考虑使用递归来实现阶乘函数的优化,或者使用动态规划来预处理阶乘值。
阅读全文