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\)

posted @ 2025-07-10 19:43  xiehanrui0817  阅读(8)  评论(0)    收藏  举报