20250710 HT-066-Rainbow
A,B,C 都比较简单,略过。
D 题,一眼一个 SG 函数,对于每个正整数求出 SG 后,异或一下即可。可是忘记怎么求欧拉函数了,手推 \(20min\) 才推出来。
E 题没啥想法,看到 \(40\) 分的 \(a < p\),输出 \(-1\) 和 \(\min((2p + a) \oplus a, (p + a) \oplus a)\)。
正解做法:令 \(x = a \oplus b = a + kp\),先考虑 \(k > 0\) 的情况,\(k \leqslant 0\) 同理。先令 \(x = a + p\),从高考虑第 \(i\) 位,只有第 \(3\) 种情况可以通过加若干个 \(p\) 使 \(x\) 第 \(i\) 位变为 \(1\),\(b\) 的第 \(i\) 位变为 \(0\)。可以通过算出 \(x\) 的后 \(i - 1\) 位得到加至少多少个 \(p\) 即可(需注意判断进位)。
| x | a | b |
|---|---|---|
| 1 | 0 | 1 |
| 1 | 1 | 0 |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
F 不会。G 题看部分分 \(k = 0\) 看成 \(1\),可以吃了。而对于 \(n \le 10^6\),可以枚举抓了 \(i\) 个人,答案就是 \(C_{n}^{i}p^i(1 -p)^{n - i}(1^k + 2^k + \dots + i^k), p = \frac{x}{x + 1}\)。
总结一下,线性筛求欧拉函数忘记了(呃),需要多练。G 看错题,纯属 \(\color{white} {sb}\)。总分:\(100 + 100 + 100 + 100 + 40 + 0 + 10 = 450\)。
浙公网安备 33010602011771号