题解:P16290 [蓝桥杯 2026 省 Java A 组] 间歇性发射
jlhj
·
·
题解
一种不同的解题思路
思路分析
条件转换
给定参数 A = 12345678901235,M = 98765432109874,S = 20260411。
由于 A = 12345678901235 是奇数,从 V = \lfloor k/2 \rfloor - A + 1 可推出:
定义 $B = 2A = 24691357802470$,则问题转化为求区间 $[B,\ M]$ 中所有满足 $k \bmod 4 \in \{2,3\}$ 的整数的异或和。
### 前缀异或函数
定义前缀异或函数:
$\operatorname{pre}(n) = \bigoplus_{i=0}^{n} \left( i \cdot [i \bmod 4 \in \{2,3\}] \right)$。
区间 $[B,\ M]$ 的异或和为:
$\operatorname{pre}(M) \oplus \operatorname{pre}(B-1)$。
### 推导 $\operatorname{pre}(n)
设 m = \lfloor n/4 \rfloor,r = n \bmod 4。分情况讨论:
- 若 r < 2,则 \operatorname{pre}(n) = m \bmod 2;
- 若 r = 2,则 \operatorname{pre}(n) = (m \bmod 2) \oplus (4m+2);
- 若 r = 3,则 \operatorname{pre}(n) = (m \bmod 2) \oplus 1。
计算
对于 M = 98765432109874:
$\operatorname{pre}(M) = 0 \oplus (4m_M + 2) = 98765432109874$。
**对于 $B-1 = 24691357802469$:**
$m_{B-1} = \left\lfloor \frac{B-1}{4} \right\rfloor = 6172839450617$,$r_{B-1} = 1$。
$\operatorname{pre}(B-1) = 1$。
### 结果计算
区间异或和:
$\operatorname{pre}(M) \oplus \operatorname{pre}(B-1) = 98765432109874 \oplus 1 = 98765432109875$。
校验码:
$S \oplus 98765432109875 = 20260411 \oplus 98765432109875 = 98765445405960$。
## 最终答案
$98765445405960