将此代码翻译为C++:def comb(n, m): if n < m: return -1 if m == 0 or n == m: return 1 if n - m < m: m = n - m numerator = 1 denominator = 1 for i in range(m): numerator *= n - i denominator *= i + 1 if numerator > 10**9: return -1 return numerator // denominator n = int(input("请输入非负整数 n:")) m = int(input("请输入非负整数 m:")) result = comb(n, m) print("组合数 (", n, ",", m, ") =", result)
时间: 2024-04-17 21:26:03 浏览: 128
以下是将上述代码翻译为C++的版本:
```cpp
#include <iostream>
int comb(int n, int m) {
if (n < m) {
return -1;
}
if (m == 0 || n == m) {
return 1;
}
if (n - m < m) {
m = n - m;
}
long long numerator = 1;
long long denominator = 1;
for (int i = 0; i < m; i++) {
numerator *= n - i;
denominator *= i + 1;
if (numerator > 1000000000) { // 10^9
return -1;
}
}
return numerator / denominator;
}
int main() {
int n, m;
std::cout << "请输入非负整数 n:";
std::cin >> n;
std::cout << "请输入非负整数 m:";
std::cin >> m;
int result = comb(n, m);
std::cout << "组合数 (" << n << ", " << m << ") = " << result << std::endl;
return 0;
}
```
你可以将此代码保存至一个C++文件中,然后编译并运行它。程序会要求你输入两个非负整数 n 和 m,然后输出对应的组合数。如果组合数大于 10^9,输出将会是 -1。
希望这对你有帮助!如果还有其他问题,请随时提问。
阅读全文