跳转至

某不科学的等差等比加权和: 补充解法

无除法的块拼接

Codex(GPT-6)补充该方法及 alternative.cpp。等比求导的首选解法见主题解。令 \(q=c^b\bmod p\) ,对长度为 \(L\) 的块保存

\[ P=q^L,\qquad S=\sum_{j=0}^{L-1}q^j,\qquad W=\sum_{j=0}^{L-1}jq^j \]

拼接前块 \(A\) 与后块 \(B\) ,后块所有幂需要乘上 \(P_A\) ,下标还需增加 \(L_A\) ,因此

\[ P=P_AP_B,\quad S=S_A+P_AS_B,\quad W=W_A+P_A(W_B+L_AS_B) \]

长度相加,所有数值按 \(p\) 取模。空块为 \((L,P,S,W)=(0,1,0,0)\) ,单项块为 \((1,q,1,0)\) .像快速幂一样不断将当前块与自己拼接,并按长度二进制位累加到结果块,得到 \(L=r-l+1\) 的统计量。

换元 \(i=l+j\) 后答案为

\[ c^dq^l\bigl((a+bl)S+bW\bigr)\pmod p \]

拼接式逐项覆盖前后两段,保持四个量的定义;二进制拼接得到所需长度,再由换元式得到正确区间和。整个方法对 \(q=1\) 也直接成立。

时间 \(O(\log(b+1)+\log(d+1)+\log(l+1)+\log(r-l+2))\) ,辅助空间 \(O(1)\) .它避免逆元和特殊公比分支,代价是每层要维护多个乘积;与首选公式都是完整范围算法。