python中大数乘法的最快方法?

python中大数乘法的最快方法?,python,dynamic-programming,multiplication,Python,Dynamic Programming,Multiplication,请看下面的代码: total = 0 for j in range(int(start)-1,int(end)): total += (A+j)*(B+j)*(C+j)*(D+j) print(total%1000000007) 现在代码运行良好,但我需要降低时间复杂性 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))

请看下面的代码:

total = 0
for j in range(int(start)-1,int(end)):
    total += (A+j)*(B+j)*(C+j)*(D+j)
print(total%1000000007)
现在代码运行良好,但我需要降低时间复杂性


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

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

我认为,要做到这一点,请记住
(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)

?超过递归限制您可以通过这样做来增加递归深度(注意,2000只是一个示例):
import sys
sys.setrecursionlimit(2000)
我这样做了,但速度仍然不够快…时间限制仍然超过了您尝试过这个吗?