【问题标题】:Fastest way to multiply large numbers in python?在python中乘以大数的最快方法?
【发布时间】:2020-03-09 10:46:26
【问题描述】:

看看下面的代码:

total = 0
for j in range(int(start)-1,int(end)):
    total += (A+j)*(B+j)*(C+j)*(D+j)
print(total%1000000007)

现在代码运行良好,但我需要降低时间复杂度。

1

1

如您所见,数字可能非常大。 如何加快乘法部分? 我尝试了俄罗斯农民技术。还是不够快。

我还阅读了有关 python 乘法的类似帖子,但它无法解决我的问题。

【问题讨论】:

标签: python dynamic-programming multiplication


【解决方案1】:

您可以在此处使用模运算。

(a+b)%c=(a%c+b%c)%c

(a∗b)%c=((a%c)∗(b%c))%c

(a−b)%c=((a%c)−(b%c)+c)%c

(a/b)%c=((a%c)∗(b−1%c))%c

这将确保整数溢出并控制时间复杂度。

【讨论】:

    【解决方案2】:

    我认为为此,记住(a+b)%c = a%c +b%c就足够了

    由于循环的每个部分都不是很大,您可以尝试:

    total = 0
    for j in range(int(start)-1,int(end)):
        total = (total + (A+j)*(B+j)*(C+j)*(D+j)) %1000000007
    print(total)
    

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2011-11-12
      • 2017-03-20
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      相关资源
      最近更新 更多