我目前正在www.codefights.com上进行每日挑战,但我无法通过一些测试。我的实现是正确的,它给出了正确的答案,但它需要太长时间。这是一个问题: -
写一个函数,计算在一个点上计算的多项式的n阶导数,模数为109 + 7.也就是说,输出应该在[0,109 + 7]范围内。
实施例 对于系数= [3,2,1,1],n = 2且x = 100,输出应为 nthDerivative(系数,n,x)= 602。 这里表示的多项式是f(x)= 3 + 2x + x2 + x3,其具有f'(x)= 2 + 6x的二阶导数。因此,答案是f'(100)= 602。
输入/输出
[执行时间限制] 4秒(py3)
[input] array.integer coefficient
多项式的系数,其中系数[i]是xi的系数。
保证约束: 0≤resystemsslength≤5000。
[输入]整数n
评估前的衍生品数量。
保证约束: 0≤n≤1000。
[输入]整数x
评估第n个导数的值。
保证约束: -1000≤x≤1000。
[输出]整数
由在x处评估的系数定义的多项式的n阶导数减去模数109 + 7.输出应在[0,109 + 7]范围内。
这是我的代码
def nthDerivative(coefficients, n, x):
#creating a list that will hold the power of each element
power = list(range(0,len(coefficients)))
#print(power)
start=0
while n != 0:
for i in range(start,len(coefficients)):
y= power[i]
if(power[i] != 0):
power[i] -=1
coefficients[i] = coefficients[i]* y
# print("Power")
# print(power)
# print("co")
# print(coefficients)
n -=1
start+=1
sum = 0
# print(power)
# print(coefficients)
for i in range(start,len(coefficients)):
sum += coefficients[i] * (x ** power[i])
return sum % (10**9 +7)
答案 0 :(得分:0)
这里可能有用的两个技巧是