C. A Good Problem
问题描述
给定四个正整数 。你需要找到一个长度为 的字典序最小*的整数数组 ,满足:
- 对于每个 ,都有 。
- ,其中 表示按位与操作, 表示按位异或操作。
如果不存在这样的数组,输出 。否则,由于整个数组可能太大而无法输出,仅输出 。
注意: 当且仅当以下条件之一成立时,数组 的字典序小于数组 :
- 是 的前缀,但 ;或者
- 在 和 不同的第一个位置,数组 的元素小于 中对应的元素。
输入
每个测试包含多个测试用例。第一行是测试用例的数量 。接下来是测试用例的描述。
每个测试用例包含四个正整数 。
输出
对于每个测试用例,输出 ,如果不存在满足条件的数组,则输出 。
题解
如果 是奇数,我们可以构造一个所有元素都等于 的数组。
然后我们可以考虑当 是偶数时会发生什么。在这种情况下,我们可以让 个元素等于 ,这意味着与操作的结果将是 ,但异或操作的结果将是 。
最后两个元素应满足条件 。考虑 中的一个位,如果我们想在结果 中保留这个位,那么这个位在 和 中都必须被设置。如果两个位都被设置,那么异或的结果将是 ,这意味着它们是无效的。 因此,对于 中所有被设置的位,我们不能在 和 中都设置它们。 并且值 和 应该大于 。 所以我们可以让 。在这种情况下,,并且 是可能的最小值。