思路:
其实就是一个构造题
我们考虑位运算&的性质 二进制位上一样 才能有贡献
所以我们可以这样构造
q+k q 0
k q+k k
这样构造的话 题中的图的伪代码的值跑出来就是(q+k)&(q)&(q+k)&(k)=0
那么按照我们选择的话就i是 (q+k)&(k)&(q+k)&(k)=k
这样就满足要求了
其中q为大于k的二次幂即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
int k;
cin>>k;
cout<<2<<" "<<3<<endl;
cout<<(1<<17)+k<<" "<<(1<<17)<<" "<<0<<endl;
cout<<k<<" "<<(1<<17)+k<<" "<<k<<endl;
return 0;
}