首页 > 试题广场 >

小红的异或构造

[编程题]小红的异或构造
  • 热度指数:247 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}请你构造一个长为 n 的数组 a_1,a_2,\dots,a_n,满足:
\hspace{23pt}\bullet\,数组元素均为小于 10^9 的正整数;
\hspace{23pt}\bullet\,对于任意一对下标 i,j\left( 1 \leqq i,j \leqq n\right),均有 a_i \oplus a_j = i \oplus j 成立。

【名词解释】
\hspace{15pt}按位异或(\oplus:对两个整数的二进制表示按位进行异或运算。

输入描述:
\hspace{15pt}第一行输入一个整数 n\left(1\leqq n \leqq 2 \times 10^5\right)


输出描述:
\hspace{15pt}输出 n 个正整数,代表所构造的数组。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

5

输出

7 4 5 2 3
示例2

输入

1

输出

4
int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i ++) cout << i << ' ';
}
i和j等于ai和aj即可

发表于 2025-12-06 18:57:06 回复(0)