from collections import deque
def transform_number(a, b):
if a == b:
return [a]
queue = deque([(a, [a])])
visited = set([a])
while queue:
current, path = queue.popleft()
next_number = current * 2
if next_number == b:
return path + [next_number]
if next_number < b and next_number not in visited:
visited.add(next_number)
queue.append((next_number, path + [next_number]))
next_number = current * 10 + 1
if next_number == b:
return path + [next_number]
if next_number < b and next_number not in visited:
visited.add(next_number)
queue.append((next_number, path + [next_number]))
return None
a = ставь чё хочешь
b = тут тоже, ну по условиям задачи конечно
result = transform_number(a, b)
if result:
print("Путь от", a, "до", b, ":", result)
else:
print("Невозможно преобразовать", a, "в", b)
b. Для этого можно использовать два типа операций:
- умножить имеющееся у него число на 2 (то есть заменить число х числом 2 х);
- приписать к имеющемуся у него числу цифру 1 справа (то есть заменить число х
числом 10 х + 1). На языке Python