Codeforces Round #630 (Div. 2) D. Walk on Matrix

思路
其实就是一个构造题
我们考虑位运算&的性质 二进制位上一样 才能有贡献
所以我们可以这样构造

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;
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务