题解 | #位操作练习#

位操作练习

https://www.nowcoder.com/practice/7bdc346ca39841f6a05f73d98477621d

#include <iostream>
using namespace std;

int main() {
    int x, y;
    while (cin >> x >> y) {
        bool flag = false;
        if (x > y) swap(x, y); //x<=y
        for (int i = 0; i <= 15; i++) {
            if (x == y) {
                flag = true;
                cout << "YES" << endl;
                break;
            } else {
                if ((x >> 15) & 1) { //如果最高位是1
                    x = (x << 1)&0xffff;
                    x += 1; //最高位的1补到最后
                } else {
                    x = (x << 1)&0xffff;
                }
            }
        }
        if (!flag) cout << "NO" << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

点赞 评论 收藏
分享
这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务