Увасилия есть число a, которое он хочет превратить в число b. для этого он может производить два типа операций: умножить имеющееся у него число на 2 (то есть заменить число x числом 2·x); приписать к имеющемуся у него числу цифру 1 справа (то есть заменить число x числом 10·x + 1). вам надо василию получить из числа a число b с описанных операций, либо сообщить, что это невозможно. обратите внимание, что в этой не требуется минимизировать количество операций. достаточно найти любой из получить из числа a число b. входные данные в первой строке записаны два целых положительных числа a и b (1 ≤ a < b ≤ 109) — число, которое есть у василия, и число, которое он хочет получить. выходные данные если получить число b из числа a невозможно, выведите «no» (без кавычек). в противном случае в первую строку выведите «yes» (без кавычек). во вторую строку выведите число k — количество чисел в последовательности превращений. в третьей строке выведите последовательность превращений x1, x2, xk, причём: x1 должно быть равно a, xk должно быть равно b, число xi должно быть получено с одной из двух операций из числа xi - 1 (1 < i ≤ k). если ответов несколько, разрешается вывести любой из них.
# Код на ruby 2.2.3p173
def f0(number, log) #
n = 10 * number + 1
log += " + 1 "
log += "[" + n.to_s + "] "
return [n, log]
end
def f1(number, log) #
n = 2 * number
log += " * 2 "
log += "[" + n.to_s + "] "
return [n, log]
end
def f2(number, log) #
n = number + 4
log += " + 4 "
log += "[" + n.to_s + "] "
return [n, log]
end
start_num = 14 # начальное число
end_num = 28 # конечное число
max_steps = end_num
op_numbers = 2
count = 0
for steps in 1..max_steps
for i in 0..op_numbers**steps-1
s = ("000000000000000000000000000000" + i.to_s(op_numbers))[-steps..-1]
num = start_num
log = start_num.to_s
for k in 0..s.size - 1
num, log = f0(num, log) if s[k] == "0"
num, log = f1(num, log) if s[k] == "1"
# num, log = f2(num, log) if s[k] == "2"
break if num > end_num
end
# p [num, log, s, steps, i]
if num == end_num
log += " = " + end_num.to_s
count += 1
p log
end
end
end
p count