题解 | #位操作练习#

位操作练习

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

#include <iostream>
#include <iterator>
using namespace std;

int main() {
  // 定义数字num和目标
    unsigned short num, target;
    while (cin >> num >> target) {
        bool flag = false;//flag用于能否找到结果
        const unsigned short carry = 1 << 15;//
        for (int i = 0; i < 20; i++) {
		  //如果num大于carry证明左移需要进一
            if (num >= carry) {
                num = (num << 1) + 1;
            } else {
                num = num << 1;
            }
		  //找到结果输出并标记
            if(num == target){
                flag = true;
                cout << "YES"<<endl;
                break;
            }
        }
       if(!flag) cout <<"NO"<<endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

coffrar:全都是已读😅沟通一千五百多个了
点赞 评论 收藏
分享
02-15 22:29
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务