python - 加权格子路径

标签 python algorithm

对于此链接上的算法(https://projecteuler.net/problem=638)我编写了以下代码,但因为它处理的是大整数并且需要很长时间我正在寻找使其高效的方法,任何人都可以阅读我的代码并给出一些建议,

def WeightedLatticePaths(k):
sigma = []
for m in range(1,k+1):
    X = pow(10,m)+m
    n = 2*X
    x=0
    y=0

    paths =[]
    for i in range(pow(2,n)):
        if ('{0:0%db}'%n).format(i).count('1')==X:
            paths.append(('{0:0%db}'%n).format(i))

    c = []
    for i in range(len(paths)):
        a = []
        route = paths[i]
        for item in route:
            if item=='0':
                y+=1
            if item=='1':
                x+=1
                a.append(y)
        p = sum(a)
        c.append(pow(m,p))

    C = sum(c)
    sigma.append(C)
return sum(sigma)%(1000000007)

最佳答案

尝试查看 modular exponentiation .它会更有效率,但我不确定它是否足够高效。顺便说一下,Python pow您正在使用的内置函数可以采用第三个参数 - 模数。将其用于模幂运算。

在解决结果被调制的问题时,经验法则是在计算过程中尽可能使用模数。因此,您可以确保您使用的数字不会大于您的模数。

关于python - 加权格子路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53824891/

相关文章:

python 2.x csv 编写器

正在拆分的 Python 用户定义的异常字符串

python - Exitwp 无法导入 PyYAML 模块

python - 在 Python 中进行 Introsort,有人可以指出我的错误吗?

string - 使用动态编程将字符串拆分为单词

python - pyside 嵌入 vim

algorithm - MergeSort - 将一个序列分为两个不相等的子序列

: how to separate sets with common range into each distinct range 的算法

java - 提高反转数组的性能

python - Sqlalchemy 用整数替换文本