6168. 恰好移动 k 步到达某一位置的方法数目

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容