随笔 3
题意简述
\(n\) 个数,每个数取值为 \([1,m]\),问 \(n\) 个数出现相邻两个数相等的方案的数量,答案模 \(100003\)。
本题有一些还算实用的trick。
首先考虑到直接求答案不好做,由此思考反着做,答案即所有方案数减去 \(n\) 个数不出现相邻两个数相等的情况的方案数量。
所有方案数,每个位置都可以取 \(m\) 个数,即 \(m^n\)。
\(n\) 个数不出现相邻两个数相等的情况的方案数量,第一个位置可以取 \(m\) 个数,其余位置取 \(m-1\) 个数,即 \(m(m-1)^{n-1}\)。
答案即 \(m^n-m(m-1)^{n-1}\),加上模就是 \((m^n\bmod 100003-m(m-1)^{n-1} \bmod 100003)\bmod 100003\)。
由于 \(n\le 10^{12}\),使用快速幂。
另外还有一个细节,\((m^n\bmod 100003-m(m-1)^{n-1} \bmod 100003)\bmod 100003\) 的值有可能是负数,根据模运算意义,应该加上 \(100003\) 再模 \(100003\)。
最后答案应该是 \((m^n\bmod 100003-m(m-1)^{n-1} \bmod 100003+100003)\bmod 100003\)。

浙公网安备 33010602011771号