题目 链接
题意
构造一个1~n的某个排列,然后从ai到aj的按位或需要大于等于j - i + 1。
简析
思考一分钟发现构造不出不合法的序列,果断交一发任意构造,A过。
原因就是在于每个数字是不重复的,因此只要高位存在,那么低位来任意多的都能够覆盖到。就算高位相同重复得再多,j - i + 1 也一定不会大于2 ^ n - 1,因此所有序列都是合法得。
参考代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e9 + 7;
int main() {
// freopen("in.txt", "r", stdin);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cout << i << " ";
}
cout << endl;
}
return 0;
}