#include <iostream> using namespace std; //十进制转二进制 void bin(int a[],int m){ for (int i = 15; i >= 0; i--){ //从数组最后一位开始存,正序输出数组就是正确的二进制 a[i] = m%2; m = m/2; } } //循环左移 void LeftMove(int a[]){ int temp = a[0]; for (int j = 0; j < 15; j++){//下标0~14的每一位都变成后一位的值 a[j] = a[j+1]; } a[15] = temp;//最后一位是上一次的首位 } int main() { int m,n; int i,j = 15; while (cin >> m >> n) { // 注意 while 处理多个 case int *a = new int[16]; //存放m的二进制 int *b = new int[16]; //存放n的二进制 //十进制转二进制 bin(a,m); bin(b,n); do { bool flag = false; for (i = 0; i < 16; i++){ //对比每一位是否相同 if (a[i] != b[i]){ flag = false; LeftMove(a); break; } else flag = true; } if (flag){ cout<<"YES"<<endl; break; } j--; }while (j); if (j==0) cout<<"NO"<<endl; } } // 64 位输出请用 printf("%lld")