代码是在数组中查找每个值的阶乘,然后将它们的总和求和。示例为[1,2,3,4],则为1!+2!+ +3!+4!= 33。等于期望总和的单个整数,以模为底降低。问题是,当涉及大量数字(仅根据我的假设)时,结果为“由于超时而终止”
起初,我使用for循环遍历数组中的每个值。认为这可能是我在范围内使用的搜索问题,以确保它具有设定的范围。可悲的是,这仍然没有解决问题。我现在认为乘数一定是个问题,因为乘法是
def factModSum(arr):
sum=0
for i in range (0,len(arr)):
sum=sum+factorial(arr[i])
return sum%(10**9)
示例1:
Input: 1 2 3 4
output: 33
Expected output: 33
示例2:
Input:2 3 5 7
Output:5168
Expected output: 33
示例3:
Input:12 13 14
Output:884313600
Expected output: 33
该函数的核心功能。但是我在某些测试用例中遇到超时错误,因此假设代码无法在给定时间内处理大量数字
答案 0 :(得分:1)
如果您要通过10 ** 9
进行改装,则可以尝试以下操作:
def factModSum(arr):
return sum(factorial(i) for i in arr if i < 40) % 10**9
这是因为n!
与n >= 40
等同于0 mod 10**9
。