Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Экзамен информатики. Составить алгоритм.

goplolkek 228 Ученик (174), на голосовании 4 месяца назад
Составить алгоритм - есть число а, которое необходимо-хочет преобразовать в число
b. Для этого можно использовать два типа операций:
- умножить имеющееся у него число на 2 (то есть заменить число х числом 2 х);
- приписать к имеющемуся у него числу цифру 1 справа (то есть заменить число х
числом 10 х + 1). На языке Python
Голосование за лучший ответ
damn Просветленный (47332) 5 месяцев назад
 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)
Похожие вопросы