6168. 恰好移动 k 步到达某一位置的方法数目
被坑了,scipy的comb默认计算组合数是不精确的,使用浮点数计算,需要加参数exact=True
才会使用整型long long
计算。
以下三个结果里,res2是错误的。
from scipy.special import comb
MOD = int(1e9 + 7)
import math
def factorial_(n):
result=1
for i in range(2,n+1):
result=result*i
return result
def comb_1(n,m):
return math.factorial(n)//(math.factorial(n-m)*math.factorial(m)) #直接使用math里的阶乘函数计算组合数
class Solution(object):
def numberOfWays(self, startPos, endPos, k):
dis = abs(startPos - endPos)
if (k + dis) & 1 or k < dis:
return 0
n = (k + dis) / 2
n = int(n)
m = k
res1 = int(comb_1(m, n)) % MOD
res2 = int(comb(m, n)) % MOD
res3 = int(comb(m, n, exact = True)) % MOD
print(res1)
print(res2)
print(res3)
return res3