思路解释

所有可能使 X 和 Y 相等的特殊情况如下(可以在草稿纸上通过变量x, y进行验算,发现只会有这几种情况):

  1. 初始状态判断:如果 X 和 Y 一开始就相等,无需任何操作,返回 0。
  2. Y 为 0 的情况:当 Y=0 且 X≠Y 时,通过一次 "变换操作" 可得 (X+0, X-0)=(X,X),因此只需 1 次操作。
  3. X 为 0 的情况:当 X=0 且 X≠Y 时,先执行 "交换操作" 得到 (Y,0)(1 次),再执行 "变换操作" 得到 (Y,Y)(第 2 次),共需 2 次操作。
  4. X 与 Y 互为相反数的情况:当 X+Y=0(即 Y=-X)且 X≠0 时,需要 3 次操作:第 1 次:变换操作得到 (X+Y, X-Y)=(0, 2X)第 2 次:交换操作得到 (2X, 0)第 3 次:变换操作得到 (2X, 2X)
  5. 其他情况:经分析,无法通过有限次操作使 X=Y,返回 - 1。

Java 实现代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x = scanner.nextInt();
        int y = scanner.nextInt();
        scanner.close();
        
        if (x == y) {
            System.out.println(0);
        } else if (y == 0) {
            System.out.println(1);
        } else if (x == 0) {
            System.out.println(2);
        } else if (x + y == 0) {
            System.out.println(3);
        } else {
            System.out.println(-1);
        }
    }
}