题意
阶数为 d 的多项式 A(x) 是形式为 A(x)=a0+a1x+a2x2+⋯+adxd 的表达式,其中 ai 是整数,ad≠0 。如果存在一个整数 s ,使得对于意整数 x 都成立,
B(x)≡A(x+s)(mod109+7).
则这两个多项式 A(x) 和 B(x) 称为相似。
对于阶数为 d 的两个相似多项式 A(x) 和 B(x) ,可以得到它们在点 x=0,1,…,d mod 109+7 中的值。求所有整数 x 的值 s,使得 B(x)≡A(x+s)(mod109+7)。
思路
不难想到做法就是将多项式差分 d−1 次后对两个一次函数的横截距作差。
所谓对多项式差分,就是每次对 y0,y1,…,yd 这些点值求差分,然后丢掉首项。
如果你记得生成函数的话,就会知道对一个数组 a0,a1,…,an 作 k 次差分得到的数组可以通过以下多项式的各项系数表示:
fk(x)=(a0x0+a1x1+a2x2+⋯+anxn)⋅(1−x)k。
我们就是要 fd−1(x) 的第 d 项和第 d−1 项系数。
于是只需要用二项式定理展开 (1−x)k 计算各 ai 对 这两项的贡献即可。
CF1817C Similar Polynomials
最新推荐文章于 2025-12-04 16:02:12 发布
979

被折叠的 条评论
为什么被折叠?



