小水獭正在学习「离散数学 3」,它接触到了组合数的定义,对于非负整数 nn 和 mm 有: (nm)=n!m!(n−m)! (mn)=m!(n−m)!n! 其中 n!=1×2×⋯×nn!=1×2×⋯×n,特别地,0!=10!=1。 由组合意义可得,当 n≥mn≥m 时组合数是一个正整数。 小水獭希望你帮他编写一个程序用以计算组合数,特别地,如果组合数的值大于 109109,你只需要输出 −1−1。
时间: 2023-11-15 22:45:48 浏览: 148
计算组合数并输出组合
你好,小水獭!我可以帮你编写一个计算组合数的程序。以下是一个示例的Python代码:
```python
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)
```
你可以将这段代码保存至一个Python文件中,然后运行它。程序会要求你输入两个非负整数 n 和 m,然后输出对应的组合数。如果组合数大于 10^9,输出将会是 -1。
希望这可以帮到你!如果还有其他问题,请随时提问。
阅读全文