import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 /*while (in.hasNextInt()) { // 注意 while 处理多个 case int a = in.nextInt(); int b = in.nextInt(); System.out.println(a + b); }*/ while (in.hasNextLine()) { String line = in.nextLine();// 不能用in.nextInt() String[] nums = line.split(" "); int n1 = Integer.valueOf(nums[0]); int n2 = Integer.valueOf(nums[1]); if (n1 == n2) { System.out.println("YES"); } else { // 1000000000000000 32768 int num = Integer.parseInt("1000000000000000", 2);// 2表示把字符串是二进制 int count = 0; boolean find = false; while (count < 16) {// 最多只能移动16次 if (n1 >= num) { // 如果n1>=32768,表示n1最左位是1 // 先把最左位变成0 n1 = n1 ^ num;// 两个数相同异或则变成0,任何数异或0都等于它本身 // 再左移1位 n1 = n1 << 1; // 再给右位加1 n1 = n1 + 1; } else {// 如果n1最左位是0,则和普通左移是一样的 n1 = n1 << 1; } if (n1 == n2) { find = true; break; } count++; } if (find) { System.out.println("YES"); } else { System.out.println("NO"); } } } } }