这道题乍一看无从下手,实际上我们想一想,或运算是只要这 2 2 2 个数有一个这个 2 2 2 进制位为 1 1 1,结果的这位二进制为就为 1 1 1。
所以,我们不难推出这样的式子: x OR y ≥ x x\ \text{OR}\ y \geq x x OR y≥x
我们发现,对于第 i i i 位为 i i i 的置换,一定是合法的。
因为 i OR j ≥ i i\ \text{OR}\ j \geq i i OR j≥i 且 i ≥ i − j + 1 i \geq i-j+1 i≥i−j+1,
所以 i OR j ≥ i − j + 1 i\ \text{OR}\ j \geq i-j+1 i OR j≥i−j+1。
证毕。
int work(){
int n;read(n);
for(int i=1;i<=n;i++)cout<<i<<" ";
cout<<endl;
return 0;
}