CF1338C Perfect Triples
题目描述
考虑一个由正整数构成的无限序列 $s$,其生成方式如下:
1. 找到字典序最小的正整数三元组 $(a, b, c)$,满足:
- $a \oplus b \oplus c = 0$,其中 $\oplus$ 表示[按位异或运算](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。
- $a$、$b$、$c$ 均不在序列 $s$ 中。
这里,若三元组 $(a_1, b_1, c_1)$ 的序列 $[a_1, b_1, c_1]$ 在字典序上小于三元组 $(a_2, b_2, c_2)$ 的序列 $[a_2, b_2, c_2]$,则称前者字典序更小。
2. 按顺序将 $a$、$b$、$c$ 添加到 $s$ 的末尾。
3. 回到第一步,继续上述过程。
现在给定一个整数 $n$,请你求出序列 $s$ 的第 $n$ 个元素。
你需要回答 $t$ 组独立的测试用例。
一个序列 $a$ 在字典序上小于序列 $b$,当且仅当在第一个不同的位置,$a$ 的元素小于 $b$ 的对应元素。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^5$),表示测试用例的数量。
接下来的 $t$ 行,每行包含一个整数 $n$($1 \le n \le 10^{16}$),表示你需要查询的元素在序列 $s$ 中的位置。
输出格式
对于每个测试用例,输出一行答案,表示序列 $s$ 的第 $n$ 个元素。
说明/提示
序列 $s$ 的前若干项为 $1, 2, 3, 4, 8, 12, 5, 10, 15, \dots$。
由 ChatGPT 4.1 翻译