您当前的位置: 首页 > 

HeartFireY

暂无认证

  • 3浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

牛客多校7.I.xay loves or 二进制

HeartFireY 发布时间:2021-08-07 14:39:43 ,浏览量:3

😀 算法标签:二进制

求出对于给到的 x x x​和 s s s​,存在多少个 y y y满足 x   o r   y = s x\ or \ y = s x or y=s。

首先考虑 y y y恒为 0 0 0的情况: x x x的某一位为 1 1 1, s s s的对应位为 0 0 0​。

再考虑 y y y的情况种数:统计 x x x和 s s s同一位都为 1 1 1的位数,同时为 1 1 1,那么对于该位 y y y就有两种选择:然后 2 n 2^n 2n​输出即可。

喜提WA…再读题,正整数。。。

考虑什么时候会出现 0 0 0这种及其特殊的数字: x x x的某一位为 0 0 0, s s s的对应位为 1 1 1,此时一定会出现 y y y取0的情况。单独挑出来 − 1 -1 −1即可。

#include 
#define ll long long
#define int long long
using namespace std;

ll binpow(ll a, ll b) {
    ll res = 1;
    while (b > 0) {
        if (b & 1) res = res * a;
        a = a * a;
        b >>= 1;
    }
    return res;
}

signed main(){
    int x, s; cin >> x >> s;
    int cnteq = 0, cntneq = 0;
    bool flag = 1;
    while(x || s){
        int xbit = x & 1, sbit = s & 1;
        if(xbit == 1 && sbit == 0) return cout = 1;
    }
    if(flag) cout             
关注
打赏
1662600635
查看更多评论
0.0403s