[HNOI2013]数列
构造一个长为 \(k(k\le 10^9)\) 的序列 \(a\),使得
- \(\forall 2\le i\le k,\ 1\le a_i-a_{i-1}\le m\)
- \(\forall 1\le i\le k,\ 1\le a_i\le n\)
其中参数 \(n,m(n\le 10^{18},m\le 10^9)\) 已知,满足 \(m*(k-1)<n\)。
问有多少种不同的 \(a\)。
限制 \(a_i-a_{i-1}\le m\) 是关于差分数组的,启发我们研究差分数组;条件 \(m*(k-1)<n\) 表明只要差分数组 \(b_{2\sim k}\) 都 \(\le m\) 就没有 \(n\) 的限制(当然还要看 \(a_1\))。
主要矛盾在于考察合法 \(a_1\) 的可能值,那么就会有 \(n-\sum b_i\) 种取法,\(\sum_{方案}(n-\sum b_i)\) 即为答案。
后者 \(=n*m^{k-1}-\sum_{方案}\sum b_i=n*m^{k-1}-(1+2+...+m)*m^{k-2}*(k-1)\)
快速幂即可。

浙公网安备 33010602011771号