「题解」 『FLA - I』冲云霄

Problem
Solution
Step1. 读题&分析
对于这道题目,我们需要根据给定的整数 $ n $ 和 $ m $ 确定是否可以用相同的正整数 $ a $ 组成一个长度为 $ m $ 的序列,使得该序列所有元素的异或结果为 $ n $。
具体来说,给定一个数列 $ a $ 的所有元素都相同,记为 $ a $。那么该数列的异或结果是:
$$
a \oplus a \oplus \cdots \oplus a
$$
其中 $ a $ 出现了 $ m $ 次。由于异或的一个重要性质是 $ x \oplus x = 0 $,因此对于一个相同的数 $ a $ 异或 $ m $ 次的结果为:
- 如果 $ m $ 是偶数,结果是 $ 0 $。
- 如果 $ m $ 是奇数,结果是 $ a $。
因此,我们可以得出结论:
- 如果 $ m $ 是偶数,那么异或结果只能是 $ 0 $。所以,如果 $ n = 0 $ 时输出
Yes
,否则输出No
。 - 如果 $ m $ 是奇数,那么异或结果是 $ a $,因此只要 $ n $ 可以作为数列中的元素(即 $ n $ 是正整数),则输出
Yes
,否则输出No
。
Step2. 代码步骤
- 输入:首先读取测试用例的数量 $ T $。然后,对于每个测试用例,读取两个整数 $ n $ 和 $ m $。
- 处理:根据 $ m $ 的奇偶性判断结果:
- 如果 $ m $ 是偶数且 $ n $ 为 $ 0 $,输出
Yes
。否则输出No
。 - 如果 $ m $ 是奇数且 $ n $ 为正整数,输出
Yes
。否则输出No
。
- 如果 $ m $ 是偶数且 $ n $ 为 $ 0 $,输出
Step3. 时间复杂度计算
因为是直接使用结论做题目,所以单次计算复杂度为 $ \Theta(1) $,对于本题目的测试点是完全没问题的(有问题就出事了)。
Code
请遵守《洛谷社区规则》,重视学术诚信,不要当C玩以达成刷AC率的目的!
1 |
|
- 标题: 「题解」 『FLA - I』冲云霄
- 作者: Frederick Chen
- 创建于 : 2024-08-03 16:35:17
- 更新于 : 2025-05-07 13:46:45
- 链接: http://www.ohdragonboi.cn/p/20240803/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论