这个题就用到红线
为啥是有理数一会就知道了
$P(x)/Q(x)$可以裂项
$frac{P(x)}{Q(x)}=sum frac{Ci}{x+b_i}=frac{P(x)}{Pi(x+b_i)}$
通分:$sum frac{Cifrac{Pi(x+b_j)}{(x+bi)}}{Pi(x+b_j)}=frac{P(x)}{Pi(x+b_i)}$
由于$P(x)$是N-2次的,而分子是N-1次的,所以最高次项一定是0,也就是$sum C_i=0$
所以x非常大的时候会消完,就是有理数了
大概就1e6(bi的范围)项
$sum Cifrac{Pi(x+b_j)}{(x+bi)}=P(x)$
然后把$-b_i$依次带入式子,$Cj$系数都是0了,就剩下$C_i*const1=const2$除过去就可以了
最后枚举每个分数对答案的贡献:
找到最后一个不会被消去的n(大概在1e6(b的范围)),对$b_i$排序,n从1开始枚举,不断加入一些Ci,每次计算即可。(可以线性预处理逆元)
Ci直接算是O(n^2)的
快速一些要多点求值:
1.$P(x)$多点求值
2.$Q'(x)=sum_{i=1}^n frac{Pi_{j=1}^n(x+b_j)}{(x+bi)}$带入$-b_i$之后恰好就是$C_i$的系数,也多点求值
$P(x)/Q(x)$也不是什么时候都可以裂项的,,有的时候也会把$Q(x)$乘过去
学习笔记]整数划分数生成函数求法