思路解释
所有可能使 X 和 Y 相等的特殊情况如下(可以在草稿纸上通过变量x, y进行验算,发现只会有这几种情况):
- 初始状态判断:如果 X 和 Y 一开始就相等,无需任何操作,返回 0。
- Y 为 0 的情况:当 Y=0 且 X≠Y 时,通过一次 "变换操作" 可得 (X+0, X-0)=(X,X),因此只需 1 次操作。
- X 为 0 的情况:当 X=0 且 X≠Y 时,先执行 "交换操作" 得到 (Y,0)(1 次),再执行 "变换操作" 得到 (Y,Y)(第 2 次),共需 2 次操作。
- X 与 Y 互为相反数的情况:当 X+Y=0(即 Y=-X)且 X≠0 时,需要 3 次操作:第 1 次:变换操作得到 (X+Y, X-Y)=(0, 2X)第 2 次:交换操作得到 (2X, 0)第 3 次:变换操作得到 (2X, 2X)
- 其他情况:经分析,无法通过有限次操作使 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); } } }