Исполнитель Робот преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавь 1;
2. Поменять цифры в разряде единиц и десятков местами, если разряд десятков меньше разряда единиц.
Сколько есть программ, которые преобразуют число 100 в число 150?
Приведём решение на языке Python.
def change(x):
x1 = (x % 100) // 10
x2 = x % 10
if x1 < x2:
return x//100*100 + x2 * 10 + x1
else:
return x
def f(x, y):
if x > y :
return 0
if x == y:
return 1
else:
if (x % 100) // 10 < x % 10:
return f(x + 1, y) + f(change(x), y)
else:
return f(x + 1, y)
print(f(100, 150))
Ответ: 35.
Приведём решение Бориса Савельева на языке Python.
def F(x,y):
if x==y:
return 1
elif x>y:
return 0
else:
if int(str(x)[-1])>int(str(x)[-2]):
return F(x+1,y)+F(int(str(x)[0]+str(x)[2]+str(x)[1]),y)
else:
return F(x + 1, y)
print(F(100,150))

