from collections import deque
import math
def min_operations_to_equal(X, Y):
# 如果初始时 X 和 Y 就相等,直接返回 0 次操作
if X == Y:
return 0
# 用于记录已经访问过的状态,避免重复处理
visited = set()
# 初始化队列,每个元素是 (当前X值, 当前Y值, 操作次数)
queue = deque([(X, Y, 0)])
visited.add((X, Y))
while queue:
current_X, current_Y, steps = queue.popleft()
if steps > 500:
return -1
# 执行交换操作
new_X_swap, new_Y_swap = current_Y, current_X
if new_X_swap == new_Y_swap:
return steps + 1
if (new_X_swap, new_Y_swap) not in visited:
visited.add((new_X_swap, new_Y_swap))
queue.append((new_X_swap, new_Y_swap, steps + 1))
# 执行变换操作
new_X_transform = current_X + current_Y
new_Y_transform = current_X - current_Y
if new_X_transform == new_Y_transform:
return steps + 1
if (new_X_transform, new_Y_transform) not in visited:
visited.add((new_X_transform, new_Y_transform))
queue.append((new_X_transform, new_Y_transform, steps + 1))
# 如果队列处理完都没找到,返回 -1
return -1
# 读取输入
X, Y = map(int,input().split())
# 计算并输出结果
print(min_operations_to_equal(X, Y))
使用BFS广度优先算法实现

京公网安备 11010502036488号