1 条题解
-
0
自动搬运
来自洛谷,原作者为

__K2FeO4
Purple, Indigo, Lavender, Lilac, Grape, Ningyezi, Amethyst, Hyacinth, Mauve, Blurple搬运于
2025-08-24 22:04:59,当前版本为作者最后更新于2023-09-14 17:05:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
来水一波 Python 题解(自带高精度的功能好爽,而且本题不用 FFT)
这题读入很毒瘤,不是直接读入系数,而是读入整个函数!更令人意想不到的是函数还有同类项!!!(我当时就是因为这个 WA 的)我在我的代码中还加入了负系数,以及一次项与常数项指数的省略。虽然本题不需要,但是这份代码可以供我后续做数学题所需。
不过读入后面的事情就小菜一碟了。求导可以用:
$$\begin{aligned} f(x)&=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}\dots+a_1x+a_0 \\f^{(k)}(x)&=a_nn^{\underline{k}}x^{n-k}+a_{n-1}(n-1)^{\underline{k}}x^{n-k-1}+a_{n-2}(n-2)^{\underline{k}}x^{n-k-2}+\dots+a_{k+1}(k+1)^{\underline{k}}x+a_kk! \end{aligned}$$暴力求解即可。时间复杂度 。
带入计算时,为尽可能运用分配律,我们可以选择 秦九韶算法,也就是:
$$\begin{aligned} f(x)&=a_nx^n+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}\dots+a_1x+a_0 \\&=x(x(\dots (x(x\times a_n+a_{n-1})+a_{n-2})\dots)+ a_1)+a_0 \end{aligned}$$所有询问时间复杂度总和 。
所以总时间复杂度 。真实时间复杂度要更高,因为有高精(尽管 Python 自带),然而 Python 能过。
代码如下:
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)
- 1
信息
- ID
- 3861
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者