P4893 Derivatives Solution
来水一波 Python 题解(自带高精度的功能好爽,而且本题不用 FFT)
这题读入很毒瘤,不是直接读入系数,而是读入整个函数!更令人意想不到的是函数还有同类项!!!(我当时就是因为这个 WA 的)我在我的代码中还加入了负系数,以及一次项与常数项指数的省略。虽然本题不需要,但是这份代码可以供我后续做数学题所需。
不过读入后面的事情就小菜一碟了。求导可以用:
暴力求解即可。时间复杂度
带入计算时,为尽可能运用分配律,我们可以选择 秦九韶算法,也就是:
所有询问时间复杂度总和
所以总时间复杂度
代码如下:
n,k=input().split(' ')
n,k=int(n),int(k)
f=input()
g=[0 for i in range(n+1)]
i=5
while i<len(f):
d=1
sign=1
while i<len(f) and (ord(f[i])<48 or ord(f[i])>=58) and f[i]!='-' and f[i]!='x':
i+=1
if f[i]=='-':
sign=-1
i+=1
x=i
while i<len(f):
try:
d=int(f[x:i+1])
except:
break
i+=1
if d==0:
d=1
d*=sign
e=0
if i<len(f) and f[i]=='x':
e=1
while i<len(f) and (ord(f[i])<48 or ord(f[i])>=58) and f[i]!='+' and f[i]!='-':
i+=1
x=i
while i<len(f):
try:
e=int(f[x:i+1])
except:
break
i+=1
g[e]+=d #I wrote g[e]=d and got a WA!
# print(g)
for i in range(k,n+1):
for j in range(i,i-k,-1):
g[i]*=j
del g[0:k]
# print(g)
m=int(input())
for i in range(m):
x=int(input())
s=0
for j in g[::-1]:
s=s*x+j
print(s)