题解 | #位操作练习#
位操作练习
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")