#include <iostream> //#include <bitset> using namespace std; // 循环左移函数 unsigned short int rol(unsigned short int val, int size) { unsigned short int res = val << size; // 左移size位 res = res|( val >> (16 - size)); // 将左边的size位移到右边 再通过位运算将这几位与res做或运算得到循环左移的效果; return res; } // 判断两个数是否可以通过循环左移得到 string judge(unsigned short int a, unsigned short int b) { for (int i = 0; i < 16; i++) { // 循环16次 if (a == b) return "YES"; // 如果相等则返回YES a = rol(a, 1); // 否则将a循环左移一位 } return "NO"; // 如果都不相等则返回NO } int main() { unsigned short int a, b; // 定义两个不大于65535的非负整数 while(cin >> a >> b){// 输入两个整数 cout << judge(a, b) << endl; }// 输出判断结果 return 0; }