/** 答案有更牛逼的思路,但我没来看。。。有空去看看 */ #include <iostream> using namespace std; #define LEN 16 string to16Bin(int n, int nums) { string res = ""; int cnt = 0; while (n) { if (n%2==1) { res = "1" + res; nums++; } else res = "0" + res; n /= 2; cnt++; } while (cnt++<LEN) res="0"+res; return res; } string judge(string s1, string s2) { for (int i = 0; i<15; i++) { s1 = s1[LEN-1] + s1.substr(0,LEN-1); if (s1 == s2) return "YES"; } return "NO"; } int main() { int a, b; while (cin>>a>>b) { if (a==b) { cout << "YES" << endl; break; } int s1_cnt = 0, s2_cnt = 0; string s1 = to16Bin(a, s1_cnt); string s2 = to16Bin(b, s2_cnt); // cout << s1 << " " << s2 << endl; if(s1_cnt!=s2_cnt) cout << "NO" << endl; else cout << judge(s1, s2) << endl; } }