CF 964C Alternating Sum
给定两正整数 \(a, b\) 。给定序列 \(s_0, s_1, \dots, s_n,s_i\) 等于 \(1\) 或 \(-1\),并且已知 \(s\) 是周期为 \(k\) 的序列并且 \(k\mid (n+1)\),输入只给出序列 \(s\) 的前 \(k\) 项。
Find out the non-negative remainder of division of \(\sum\limits_{i=0}^n s_i a^{n-i}b^i\) by \(10^9+9\).
数据范围
$ 1\le n, a, b \le 10^9\( \) 1\le k \le 10^5$
分析
注意到 \(10^9 + 9\) 是一个素数,令 \(p = 10^9 + 9\) 。
问题可化为等比数列求和。公比为 \(q = \left(\dfrac{b}{a}\right)^k\) 。要特别注意 \(q = 1 \pmod{p}\) 时等比数列的求和公式不再适用。
比赛时,我第一发提交没有注意到这个点。后来想到这个点,但只想到了 \(a = b \pmod{p}\) 的情况。其实这并不是使 \(q = 1\) 的唯一情况,至少还有一种情况「\(a = - b \pmod {p}\) 且 \(k\) 为偶数」也使得 \(q = 1\) 。比赛时我没想到这种情况,到快结束时,把用公式求和换成折半求和才通过的。
$1-(\frac{b}{a})^k $ 在模 \(p\) 逆元不存在 \(\iff\) \(1-(\frac{b}{a})^k = 0 \pmod{p}\) \(\iff\) \((\frac{b}{a})^k = 1 \pmod{p}\)
「这一段论证真是太蠢了,被自己给蠢哭了」
下面仔细分析一下这个问题
令 \(S = \sum\limits_{i=0}^{k-1} s_i a^{n-i}b^i\) 。考虑 \(q \ne 1\pmod{p}\) 的情形。
求和公式为
\[
\frac{S(1-(\frac{b}{a})^{n+1})} {1-(\frac{b}{a})^k}
\]
分母 \(1-(\frac{b}{a})^k\) 在模 \(p\) 下的逆元一定存在吗?
答案是肯定的。假设分母在模 \(p\) 下的逆元不存在,即 \(p\mid (a^k - b^k)(a^k)^{-1}\iff p\mid (a^k - b^k)\)
总结
当意识等比数列求和公式有不适用的情况时,应当进一步问自己,「等比数列求和公式不适用的充要条件是什么?」然后就自然会想到「直接去判断 \(\left(\dfrac{b}{a}\right)^k \bmod p\) 是否等于 \(1\)」 。