У исполнителя Калькулятор две команды, которым присвоены номера:
1. прибавь 1 2. увеличь две младшие цифры на 1
Первая из них увеличивает число на экране на 1, вторая – увеличивает на 1 число десятков и число единиц.
Если перед выполнением команды 2 какая-либо из двух младших цифр равна 9, она не изменяется. Программа для Калькулятора – это последовательность команд.
Сколько есть программ, которые число 23 преобразуют в число 48?
26
def f(x, y): if x == y: return 1 if x > y: return 0 if x % 10 == 9: return f(x+1, y) + f(x+10, y) return f(x+1, y) + f(x+11, y) print( f(23, 48) )
У исполнителя Калькулятор две команды, которым присвоены номера:
1. прибавь 1 2. увеличь вторую с конца цифру на 1
Первая из них увеличивает число на экране на 1, вторая – увеличивает на 1 число десятков. Если перед выполнением команды 2 вторая с конца цифра равна 9, она не изменяется. Программа для Калькулятора – это последовательность команд.
Сколько есть программ, которые число 15 преобразуют в число 28?
5
def f(x, y): if x == y: return 1 if x > y: return 0 return f(x+1, y) + f(x+10, y) print( f(15, 28) )
У исполнителя Утроитель две команды, которым присвоены номера:
1. прибавь 1 2. умножь на 3
Первая из них увеличивает число на экране на 1, вторая – утраивает его. Программа для Утроителя – это последовательность команд.
Сколько есть программ, которые число 1 преобразуют в число 20?
12
def f(x, y): if x == y: return 1 if x > y: return 0 if x < y: return f(x+1, y) + f(x*3, y) print( f(1, 20) )
Исполнитель Май4 преобразует число, записанное на экране. У исполнителя три команды, которым присвоены номера:
1. прибавь 1 2. прибавь 2 3. прибавь 4
Первая из них увеличивает число на экране на 1, вторая увеличивает это число на 2, а третья – на 4. Программа для исполнителя Май4 – это последовательность команд.
Сколько есть программ, которые число 21 преобразуют в число 30?
96
def f(x, y): if x == y: return 1 if x > y: return 0 if x < y: return f(x+1, y) + f(x+2, y) + f(x+4, y) print( f(21, 30) )
Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя три команды, которым присвоены номера:
1. прибавь 1 2. прибавь 2 3. прибавь следующее
Первая из них увеличивает число на экране на 1, вторая увеличивает это число на 2, а третья прибавляет к числу на экране число, большее на 1 (к числу 3 прибавляется 4, к числу 9 прибавляется 10 и т. д.). Программа для исполнителя Калькулятор– это последовательность команд.
Сколько есть программ, которые число 2 преобразуют в число 10?
47
def f(x, y): if x == y: return 1 if x > y: return 0 if x < y: return f(x+1, y) + f(x+2, y) + f(2*x+1, y) print( f(2, 10) )
Исполнитель Июнь15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1 2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Июнь15 – это последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является число 21 и при этом траектория вычислений содержит число 10?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, 17.
28
def f(x, y): if x == y: return 1 if x > y: return 0 if x < y: return f(x+1, y) + f(x*2, y) print( f(1, 10) * f(10, 21) )
У исполнителя Удвоитель две команды, которым присвоены номера:
1. Прибавить 1 2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Удвоитель – это последовательность команд.
Сколько существует программ, преобразующих число 4 в число 24 , предпоследней командой которых является команда 1?
18
def f(x, y, s): if x == y: return s[-2] == '1' if x > y: return 0 return f(x + 1, y, s + '1') + f(x * 2, y, s + '2') print( f(4, 24, ''))
Исполнитель Июнь15 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1 2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя Июнь15 – это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является число 29 и при этом траектория вычислений содержит число 14 и не содержит числа 25?
13
def f(x, y): if x == y: return 1 if x > y or x == 25: return 0 if x < y: return f(x+1, y) + f(x*2, y) print( f(2, 14) * f(14, 29))
Исполнитель М17 преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1 2. Прибавить 2 3. Умножить на 3
Первая команда увеличивает число на экране на 1, вторая – увеличивает его на 2, а третья – умножает его на 3. Программа для исполнителя М17 – это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является число 12 и при этом траектория вычислений содержит числа 8 и 10?
60
def f(x, y): if x == y: return 1 if x > y: return 0 if x < y: return f(x+1, y) + f(x+2, y) + f(x*3, y) print( f(2, 8) * f(8, 10) * f(10, 12))
Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1 2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2. Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является число 20 , и при этом траектория вычислений содержит число 10?
28
def f(x, y): if x == y: return 1 if x > y: return 0 if x < y: return f(x+1, y) + f(x*2, y) print( f(1, 10) * f(10, 20))
(А.Е. Гребенкин) Исполнитель U18 преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Вычесть 1 2. Вычесть 3 3. Разделить нацело на 3
При выполнении команды 3 выполняется деление нацело (остаток отбрасывается).
Программа для исполнителя U18 – это последовательность команд. Сколько существует таких программ, которые исходное число 22 преобразуют в число 2?
2196
def f(x, y): if x == y: return 1 if x < y: return 0 return f(x - 1, y) + f(x - 3, y) + f(x // 3, y) print(f(22, 2))
Исполнитель Июнь17 преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1 2. Сделай нечётное
Выполняя первую команду, исполнитель увеличивает число на 1, а выполняя вторую – из числа x получает число 2x+1. Сколько существует программ, для которых при исходном числе 1 результатом является число 25 и при этом траектория вычислений не содержит число 21?
20
def f(x, y): if x == y: return 1 if x > y or x == 21: return 0 return f(x + 1, y) + f(2 * x + 1, y) print(f(1, 25))
(Е. Джобс) Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Вычти 8 2. Раздели нацело на 2
Первая команда уменьшает число на 8, вторая – вдвое. Программа для исполнителя – это последовательность команд. Сколько существует таких программ, которые исходное число 102 преобразуют в число 5 и при этом траектория вычислений программы содержит число 43?
8
def f(x, y): if x == y: return 1 if x < y: return 0 return f(x - 8, y) + f(x // 2, y) print(f(102, 43) * f(43, 5))
Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. прибавь 1, если чётное 2. умножь на 2
Сколько существует программ, которые преобразуют исходное число 3 в число 21?
0
def f(x, y): if x == y: return 1 if x > y: return 0 h = f(x * 2, y) if x % 2 == 0: h += f(x + 1, y) return h print(f(3, 21))
(С.С. Поляков) У исполнителя Калькулятор есть три команды, которым присвоены номера:
1. Прибавить 1 2. Прибавить 5 3. Умножить на 3
Определите число, для получения которого из числа 1 существует 175 программ.
19
def f(x, y): if x > y: return 0 if x == y: return 1 if x < y: return f(x + 1, y) + f(x + 5, y) + f(x * 3, y) for i in range(2, 100): if f(1, i) == 175: print(i)
(А.Н. Носкин) У исполнителя Калькулятор есть две команды, которым присвоены номера:
1. Прибавить 2 2. Прибавить 5
Определите число, для получения которого из числа 5 существует 34 программы.
27
def f(x, y): if x == y: return 1 if x > y: return 0 return f(x + 2, y) + f( x + 5, y) for y in range(1, 100): if f(5, y) == 34: print(y); break
Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1 2. Прибавить 2 3. Умножить на 2
Программа для исполнителя Калькулятор – это последовательность команд. Сколько существует программ, состоящих из 6 команд, для которых при исходном числе 1 результатом является число 20?
36
def f(x, y, s): if x > y: return 0 if x == y: return s == 6 return f(x + 1, y, s + 1) + f(x + 2, y, s + 1) + f(x * 2, y, s + 1) print(f(1, 20, 0))
Исполнитель Калькулятор преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1 2. Прибавить 2 3. Прибавить 3
Программа для исполнителя Калькулятор – это последовательность команд. Сколько существует программ, состоящих из 7 команд, для которых при исходном числе 3 результатом является число 22?
28
def f(x, y, s): if x == y and s == 7: return 1 if x > y: return 0 return f(x + 1, y, s + 1) + f(x + 2, y, s + 1) + f(x + 3, y, s + 1) print(f(3, 22, 0))
(С.С. Поляков) У исполнителя Калькулятор есть три команды, которым присвоены номера:
1. Прибавить 1 2. Прибавить 5 3. Умножить на 3
Найдите длину самой короткой программы, в результате выполнения которой при исходном числе 1 результатом является число 227.
7
from functools import * @lru_cache(None) def f(x, y, s): if x > y: return 10 ** 8 if x == y: return s if x < y: return min(f(x + 1, y, s + 1), f(x + 5, y, s + 1), f(x * 3, y, s + 1)) print(f(1, 227, 0))
(С.С. Поляков) У исполнителя Калькулятор есть три команды, которым присвоены номера:
1. Прибавить 1 2. Прибавить 5 3. Умножить на 3
Сколько разных чисел может быть получено из числа 1 с помощью программ, состоящих из 4 команд?
43
d = set() def f(x, s): if s == 4: d.add(x) else: f(x + 1, s + 1) f(x + 5, s + 1) f(x * 3, s + 1) f(1, 0) print(len(d))
(Е. Джобс) Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавь 3 2. Умножь на 3
Сколько различных чётных чисел, меньших 100, может получить Калькулятор из исходного числа 3?
16
Вариант 1:
d = set() def f(x): if x >= 100: return 0 if x < 100 and x % 2 == 0: d.add(x) if x < 100: f(x + 3) f(x * 3) f(3) print(len(d))
Вариант 2:
def f(x, y): if x > y: return 0 if x == y: return 1 if x < y: return f(x + 3, y) + f(c * 3, y) k = 0 for i in range(4, 100, 2): if f(3, i) != 0: k += 1 print(k)
(А. Богданов) Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. прибавить 1 2. прибавить 2 3. умножить на 2
Первая команда увеличивает число на экране на 1, вторая увеличивает его на 2, третья - умножает на 2.
Программа для исполнителя - это последовательность команд. Сколько существует программ, которые преобразуют исходное число 1 в число 11 и при этом не содержат двух команд умножения подряд?
213
Вариант 1:
def f(x, y, p = 0): if x > 11: return 0 if x == 11: return 1 if x < 11: h = f(x + 1, y) + f(x + 2, y) if p == 0: h += f(x * 2, y, 1) return h print(f(1, 11))
Вариант 2:
def f(x, y, p = 0): if x < y: h = f(x + 1, y) + f(x + 2, y) if p == 0: h += f(x * 2, y, 1) return x == y print(f(1, 11))
(А. Богданов) Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. прибавить 1 2. умножить на 2
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 20, и при этом траектория вычислений содержит число 10?
Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, 17.
28
Вариант 1:
def f(x, y): if x == y: return 1 if x > y: return 0 return f(x + 1, y) + f(x * 2, y) print(f(1, 10) * f(10, 20))
Вариант 2:
f = lambda a, b: f(a + 1, b) + f(a * 2, b) if a < b else a == b print(f(1, 10) * f(10, 20))
(А. Богданов) Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. прибавить 1 2. умножить на 2
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 20, и при этом траектория вычислений содержит число 10 и не содержит число 15?
Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, 17.
14
Вариант 1:
def f(x, y): if x == y: return 1 if x > y or x == 15: return 0 return f(x + 1, y) + f(x * 2, y) print(f(1, 10) * f(10, 20))
Вариант 2:
f = lambda a, b: f(a + 1, b) + f(a * 2, b) if a < b and a != 15 else a == b print(f(1, 10) * f(10, 20))
(А. Богданов) Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. прибавить 1 2. умножить на 2
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 20, и при этом траектория вычислений содержит либо число 8, либо число 12, но не оба числа одновременно?
Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, 17.
40
Вариант 1:
#проходя 8, но не проходя 12 def f(x, y): if x == y: return 1 if x > y or x == 12: return 0 return f(x + 1, y) + f( x * 2, y) k = f(1, 8) * f(8, 20) #проходя 12, но не проходя 8 def f(x, y): if x == y: return 1 if x > y or x == 8: return 0 return f(x + 1, y) + f( x * 2, y) k += f(1, 12) * f(12, 20) print(k)
Вариант 2:
def f(x, y, p): if x == y: return 1 if x > y or x == p: return 0 return f(x + 1, y, p) + f(x * 2, y, p) print(f(1, 8, 0) * f(8, 20, 12) + f(1, 12, 8) * f(12, 20, 0))
Вариант 3:
def f(x,y,k): if x==8 or x==12: k+=1 if x==y and k==1: return 1 if x>y: return 0 return f(x+1,y,k)+f(x*2,y,k) print(f(1,20,0))
Исполнитель преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Вычти 1 2. Найди целую часть от деления на 2
Первая команда уменьшает число на экране на 1, вторая заменяет число на экране на целую часть от деления числа на 2. Сколько существует программ, для которых при исходном числе 30 результатом является число 1, и при этом траектория вычислений содержит число 12?
376
Вариант 1:
def f(x, y): if x == y: return 1 if x < y: return 0 return f(x - 1, y) + f(x // 2, y) print(f(30, 12) * f(12, 1))
Вариант 2:
f = lambda x, y: f(x - 1, y) + f(x // 2, y) if x > y else x == y print(f(30, 12) * f(12, 1))
Исполнитель преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Вычти 2 2. Найди целую часть от деления на 2
Первая команда уменьшает число на экране на 2, вторая заменяет число на экране на целую часть от деления числа на 2. Сколько существует программ, для которых при исходном числе 28 результатом является число 1, и при этом траектория вычислений содержит число 10?
36
Вариант 1:
def f(x, y): if x == y: return 1 if x < y: return 0 return f(x - 2, y) + f(x // 2, y) print(f(28, 10) * f(10, 1))
Вариант 2:
f = lambda x, y: f(x - 2, y) + f(x // 2, y) if x > y else x == y print(f(28, 10) * f(10, 1))
Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. прибавить 1 2. умножить на 2
Программа для исполнителя - это последовательность команд. Сколько существует программ для которых при исходном числе 1 результатом является число 35, при этом траектория вычислений содержит число 10 и не содержит 17?
Траектория вычислений программы - это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, 17.
98
Вариант 1:
def f(x, y): if x == y: return 1 if x > y or x == 17: return 0 return f(x + 1, y) + f(x * 2, y) print(f(1, 10) * f(10, 35))
Вариант 2:
f = lambda x, y: f(x + 1, y) + f(x * 2, y) if x < y and x != 17 else x == y print(f(1, 10) * f(10, 35))
(А. Богданов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 2 3. Возведи в квадрат
Первая команда увеличивает число на экране на 2, вторая – умножает на 2, третья команда возводит число в квадрат. Программа для исполнителя - это последовательность команд, каждая из которых увеличивает число. Сколько существует различных программ с нечётным числом команд, которые преобразуют исходное число 1 в число 100?
1025
#для числа 1 нужно исключить команду 3 - возведение в квадрат
#т.к. возводить в квадрат единицу можно бесконечно, но для
#чисел отличных от единицы, обязательно её использовать
Вариант 1:
def f(x, y, s): if x > y: return 0 if x == y and s % 2 != 0: return 1 if x != 1: return f(x+2, y, s+1) + f(x*2, y, s+1) + f(x**2, y, s+1) else: return f(x+2, y, s+1) + f(x*2, y, s+1) print(f(1, 100, 0))
Вариант 2 (А. Богданов):
def f(a,k=0): return a<100 and f(a+2,k+1)+f(a*2,k+1)+(a>1 and f(a*a,k+1)) or a==100 and k%2 print(f(1))
(Е. Джобс) Исполнитель преобразует двузначное число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Сложи разряды числа 2. Перемножь разряды числа
Выполняя первую из них, исполнитель складывает разряды числа и выводит соответствующее значение на экран. При выполнении второй команды находится произведение разрядов, которое выводится на экран. Программой для исполнителя называется последовательность команд. Например, программа 221 примененная к числу 93 выполнится следующим образом: 9*3 = 27, 2*7 = 14, 1+4 = 5.
Найдите количество различных двузначных чисел, которые этот исполнитель может преобразовать в число 8?
34
def f(x): if x == 8: return 1 if x < 10: return 0 return f((x//10) * (x%10)) + f(x//10 + x%10) ans = [] for x in range(10, 100): if f(x): ans.append(x) print(len(ans), ans)
(Е. Джобс) Исполнитель преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Вычти 3 2. Раздели нацело на 2
Выполняя первую из них, исполнитель уменьшает число на экране на 3, выполняя вторую – делит число на экране на 2 нацело, отбрасывая остаток. Программой для исполнителя называется последовательность команд.
Сколько существует программ, для которых при исходном числе 108 результатом является число 12, и при этом траектория вычислений содержит число 42?
30
f = lambda x, y: f(x - 3, y) + f(x // 2, y) if x > y else x == y print(f(108, 42) * f(42, 12))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 3 3. Умножь на 4
Выполняя первую из них, исполнитель увеличивает число на экране на 2, выполняя вторую – умножает на 3, выполняя третью – умножает на 4. Программой для исполнителя называется последовательность команд.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 600, и при этом траектория вычислений содержит ровно 5 чисел с суммой цифр 14.
6120
from functools import * @lru_cache(None) def f(x, y, p): if sum(map(int, str(x))) == 14: p += 1 if x == y and p == 5: return 1 if x > y: return 0 return f(x + 2, y, p) + f(x * 3, y, p) + f(x * 4, y, p) print(f(1, 600, 0))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 3 3. Умножь на 4
Выполняя первую из них, исполнитель увеличивает число на экране на 2, выполняя вторую – умножает на 3, выполняя третью – умножает на 4. Программой для исполнителя называется последовательность команд.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 600, и при этом траектория вычислений не содержит двух идущих подряд нечётных чисел.
20375
Вариант 1:
def f(x, y, p1, p2): p2 = p1 p1 = 1 if x%2 != 0 else 0 if p1 == p2 == 1 or x > y: return 0 if x == y: return 1 return f(x + 2, y, p1, p2) + f(x * 3, y, p1, p2) + f(x * 4, y, p1, p2) print(f(1, 600, 0, 0))
Вариант 2:
def f(x,y,p): if p % 2 == x % 2 != 0 or x > y: return 0 if x == y: return 1 p = x return f(x + 2, y, p) + f(x * 3, y, p) + f(x * 4, y, p) print(f(1, 600, 0))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 3 3. Умножь на 4
Выполняя первую из них, исполнитель увеличивает число на экране на 2, выполняя вторую – умножает на 3, выполняя третью – умножает на 4. Программой для исполнителя называется последовательность команд.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 600, и при этом траектория вычислений (включая начальное число) содержит три подряд идущих числа, сумма которых кратна 11.
58085
from functools import * @lru_cache(None) def f(x, y, x1, x2, x3, k): x3 = x2; x2 = x1; x1 = x if x1 * x2 * x3 != 0 and (x1 + x2 + x3) % 11 == 0: k += 1 if x == y and k > 0: return 1 if x > y: return 0 return f(x+2,y,x1,x2,x3,k) + f(x*3,y,x1,x2,x3,k) + f(x*4,y,x1,x2,x3,k) print(f(1, 600, 0, 0, 0, 0))
(М. Байрамгулов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Умножь на 2 3. Вычти 3
Выполняя первую из них, исполнитель увеличивает число на экране на 1, выполняя вторую – умножает на 2, выполняя третью – уменьшает на 3. Программой для исполнителя называется последовательность команд.
Сколько существует программ длиной не более 7 команд, которые преобразуют число 1 в число 10?
38
#нельзя использовать условие if x > y: return 0
#т.к. есть команда 3, т.е. можно уменьшить число
#большее 10, только проверка длины программы
def f(x, y, s):
if s > 7: return 0
if x == y: return 1
return f(x+1, y, s+1) + f(x*2, y, s+1) + f(x-3, y, s+1)
print(f(1, 10, 0))
(М. Байрамгулов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Умножь на 3 3. Прибавь предыдущее
Выполняя первую из них, исполнитель увеличивает число на экране на 1, выполняя вторую – умножает на 3, выполняя третью – прибавляет предыдущее значение (полученное после предпоследней выполненной операции). Программой для исполнителя называется последовательность команд.
Сколько существует программ, которые преобразуют число 2 в число 27?
135
def f(x, y, p): if x > y: return 0 if x == y: return 1 if p!=0: h = f(x + p, y, x) + f(x + 1, y, x) + f(x * 3, y, x) else: h = f(x + 1, y, x) + f(x * 3, y, x) return h print(f(2, 27, 0))
(М. Байрамгулов) Исполнитель перемещается на координатной плоскости. У исполнителя есть три команды, которым присвоены номера:
1. Увеличь x на 1 2. Умножь x на 2 3. Увеличь y на 3
Выполняя первую из них, исполнитель увеличивает координату x на 1, выполняя вторую – умножает на 2, выполняя третью – увеличивает координату y на 3. Программой для исполнителя называется последовательность команд.
Сколько существует программ, при выполнении которых исполнитель из точки (1,0) переместится в точку (17, 27)?
11973104
from functools import * @lru_cache(None) def f(x, y, xk, yk): if x > xk or y > yk: return 0 if x == xk and y == yk: return 1 return f(x + 1, y, xk, yk) + f(x * 2, y, xk, yk) + f(x, y+3, xk, yk) print(f(1, 0, 17, 27))
(М. Ишимов) Исполнитель преобразует число на экране. У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Вычти 2 B. Вычти минимальную ненулевую цифру числа C. Вычти остаток от деления на 4
Выполняя первую из них, исполнитель уменьшает значение на экране на 2, выполняя вторую – уменьшает на минимальную ненулевую цифру числа, выполняя третью – уменьшает на остаток от деления числа на 4. Программа для исполнителя – это последовательность команд, каждая из которых уменьшает число.
Сколько существует программ, для которых при исходном числе 96 результатом является число 60, и при этом траектория вычислений содержит число 64?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы ABC при исходном числе 38 траектория будет состоять из чисел 36, 33, 32.
37104
def f(x, y): if x < y: return 0 if x == y: return 1 c = int(min(str(x).replace('0', ''))) if x % 4 == 0: return f(x - 2, y) + f(x - c, y) return f(x - 2, y) + f(x - c, y) + f(x - x % 4, y) print(f(96, 64) * f(64, 60))
(В. Петров) Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Умножь на 2 3. Умножь на 3
Первая команда увеличивает число на экране на 1, вторая умножает его на 2, третья – умножает на 3. Программа для исполнителя – это последовательность команд.
Определите длину самой короткой программы, которая преобразует число 1 в число 9217 и содержит ровно 30 команд "Прибавь 1". Под длиной программы понимается количество команд, входящих в неё.
36
from functools import * ans = [] @lru_cache(None) def f(x, y, k1, s): if x > y or k1 > 30: return 0 if x == y and k1 == 30: ans.append(s); return 1 return f(x + 1, y, k1 + 1, s+1) + f(x * 2, y, k1, s+1) + f(x * 3, y, k1, s+1) f(1, 9217, 0, 0) print(min(ans))
Исполнитель преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавь 1 2. Припиши 2
Первая команда увеличивает число на экране на 1, вторая приписывает 2 в начало десятичной записи числа. Программа для исполнителя – это последовательность команд. Например, если в начальный момент на экране находится число 3, то программа 212 последовательно преобразует его в 23, 24, 224.
Сколько существует различных программ, которые преобразуют исходное число 3 в число 678?
616
def f(x, y): if x == y: return 1 if x > y: return 0 return f(x + 1, y) + f(int('2' + str(x)), y) print(f(3, 678))
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Умножь на 2 3. Умножь на 3
Первая команда увеличивает число на экране на 1, вторая умножает его на 2, третья – умножает на 3.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 100 и содержат не более двух команд умножения?
1565
def f(x, y, k): if x == y and k < 3: return 1 if x > y: return 0 return f(x + 1, y, k) + f(x * 2, y, k + 1) + f(x * 3, y, k + 1) print(f(1, 100, 0))
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 3 3. Умножь на 5
Первая команда увеличивает число на экране на 2, вторая умножает его на 3, третья – умножает на 5.
Сколько существует различных программ, которые преобразуют исходное число 2 в число 200 и содержат не более трёх команд умножения?
793
def f(x, y, k): if x == y and k < 4: return 1 if x > y: return 0 return f(x + 2, y, k) + f(x * 3, y, k + 1) + f(x * 5, y, k + 1) print(f(2, 200, 0))
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Умножь на 3 3. Умножь на 4
Первая команда увеличивает число на экране на 1, вторая умножает его на 3, третья – умножает на 4.
Сколько существует различных программ, которые преобразуют исходное число 3 в число 300 и содержат не более пяти команд умножения?
12998
def f(x, y, k): if x == y and k < 6: return 1 if x > y: return 0 return f(x + 1, y, k) + f(x * 3, y, k + 1) + f(x * 4, y, k + 1) print(f(3, 300, 0))
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Умножь на 2 3. Умножь на 3
Первая команда увеличивает число на экране на 1, вторая умножает его на 2, третья – умножает на 3.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 157 и содержат больше команд умножения, чем сложения?
113
def f(x, y, k): if x == y and k > 0: return 1 if x > y: return 0 return f(x + 1, y, k - 1) + f(x * 2, y, k + 1) + f(x * 3, y, k + 1) print(f(1, 157, 0))
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Умножь на 2 3. Умножь на 5
Первая команда увеличивает число на экране на 1, вторая умножает его на 2, третья – умножает на 5.
Сколько существует различных программ, которые преобразуют исходное число 3 в число 260 и содержат больше команд умножения, чем сложения?
27
def f(x, y, k): if x == y and k > 0: return 1 if x > y: return 0 return f(x + 1, y, k - 1) + f(x * 2, y, k + 1) + f(x * 5, y, k + 1) print(f(3, 260, 0))
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 3 2. Умножь на 2 3. Умножь на 7
Первая команда увеличивает число на экране на 3, вторая умножает его на 2, третья – умножает на 7.
Сколько существует различных программ, которые преобразуют исходное число 2 в число 472 и содержат больше команд умножения, чем сложения?
52
def f(x, y, k): if x == y and k > 0: return 1 if x > y: return 0 return f(x + 3, y, k - 1) + f(x * 2, y, k + 1) + f(x * 7, y, k + 1) print(f(2, 472, 0))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 2 3. Умножь на 3
Первая команда увеличивает число на экране на 2, вторая умножает его на 2, третья – умножает на 3.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 402, и при этом траектория вычислений содержит не более 2 чётных чисел (не считая первое и последнее числа)?
1264
from functools import * @lru_cache(None) def f(x, y, k): if x % 2 == 0 and x != 402: k += 1 if x == y and k < 3: return 1 if x > y: return 0 return f(x + 2, y, k) + f(x * 2, y, k) + f(x * 3, y, k) print(f(1, 402, 0))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 2 3. Умножь на 3Первая команда увеличивает число на экране на 2, вторая умножает его на 2, третья – умножает на 3. Сколько существует различных программ, которые преобразуют исходное число 1 в число 214, и при этом траектория вычислений содержит не более 6 нечётных чисел (не считая первое и последнее числа)?
69408
from functools import * @lru_cache(None) def f(x, y, k): if x % 2 != 0 and x != 1: k += 1 if x == y and k < 7: return 1 if x > y: return 0 return f(x + 2, y, k) + f(x * 2, y, k) + f(x * 3, y, k) print(f(1, 214, 0))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 2 2. Умножь на 2 3. Умножь на 3
Первая команда увеличивает число на экране на 2, вторая умножает его на 2, третья – умножает на 3.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 300, и при этом траектория вычислений содержит не более 3 чисел кратных 6 (не считая первое и последнее числа)?
4912
from functools import * @lru_cache(None) def f(x, y, k): if x % 6 == 0 and x != 300: k += 1 if x == y and k < 4: return 1 if x > y: return 0 return f(x + 2, y, k) + f(x * 2, y, k) + f(x * 3, y, k) print(f(1, 300, 0))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Умножь на 5 2. Умножь на 3 3. Прибавь 45
Первая команда умножает число на экране на 5, вторая – умножает на 3, третья – увеличивает на 45.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 2970, и при этом траектория вычислений не более 4 команд «умножь на 5», не менее 2 команд «умножь на 3», и ровно 5 команд «прибавь 45»?
74
def f(x, y, k5, k3, k45): if x == y and k5 < 5 and k3 > 1 and k45 == 5: return 1 if x > y: return 0 return f(x * 5, y, k5 + 1, k3, k45) + f(x * 3, y, k5, k3 + 1, k45)\ + f(x + 45, y, k5, k3, k45 + 1) print(f(1, 2970, 0, 0, 0))
(М. Шагитов) Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Припиши 1 3. Умножь на 5
Первая команда увеличивает число на экране на 1. Вторая приписывает в конец числа 1, если новое число делится на 3; в противном случае число не изменяется. Третья команда умножает число на 5.
Сколько существует различных программ, которые преобразуют исходное число 1 в число 410?
1440
def f(x, y): if x == y: return 1 if x > y: return 0 h = f(x + 1, y) + f(x * 5, y) if (x * 10 + 1) % 3 == 0: h += f(x * 10 + 1, y) return h print(f(1, 410))
(И. Женецкий) Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть две команды, которым присвоены номера:
1. Вычти 3 2. Найди целую часть от деления на 7
Первая из них уменьшает число на экране на 3, вторая заменяет число на экране на целую часть от деления числа на 7. Программа для исполнителя – это последовательность команд.
Сколько существует различных программ, для которых при исходном числе 50 результатом является число 1?
6
def f(x, y): if x == y: return 1 if x < y: return 0 return f(x - 3, y) + f(x // 7, y) print(f(50, 1))
(Е. Джобс) Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавь 1 2. Прибавь 2 3. Умножь на 2
Первая команда увеличивает число на 1, вторая – на 2, третья – вдвое. Программа для исполнителя – это последовательность команд.
Сколько существует таких программ, которые исходное число 3 преобразуют в число 25 и при этом в программе есть все три команды?
15092
def f(x, y, k1, k2, k3): if x == y and k1 * k2 * k3 != 0: return 1 if x > y: return 0 return f(x+1, y, k1+1, k2, k3) + f(x+2, y, k1, k2+1, k3) \ + f(x*2, y, k1, k2, k3+1) print(f(3, 25, 0, 0, 0))
У исполнителя Калькулятор имеются три команды, которым присвоены номера:
1. Прибавь 2 2. Прибавь 3 3. Умножь на 2
Выполняя первую из них, исполнитель увеличивает число на экране на 2, выполняя вторую – увеличивает на 3, выполняя третью – умножает на 2. Сколько существует программ, для которых при исходном числе 3 результатом является число 25, и при этом траектория вычислений содержит число 10 и не содержит число 17?
90
def f(x, y): if x == y: return 1 if x > y or x == 17: return 0 return f(x + 2, y) + f(x + 3, y) + f(x * 2, y) print(f(3, 10) * f(10, 25))
У исполнителя Калькулятор имеются три команды, которым присвоены номера:
1. Вычесть 1 2. Вычесть 2 3. Найти целую часть от деления на 3
Выполняя первую из них, исполнитель уменьшает число на экране на 1, выполняя вторую – уменьшает на 2, выполняя третью – делит на 3 нацело, отбрасывая остаток. Сколько существует программ, для которых при исходном числе 19 результатом является число 3, и при этом траектория вычислений не содержит чисел 9 и 16?
180
def f(x, y): if x == y: return 1 if x < y or x == 9 or x == 16: return 0 return f(x - 1, y) + f(x - 2, y) + f(x // 3, y) print(f(19, 3))
У исполнителя Калькулятор имеются три команды, которым присвоены номера:
1. Вычесть 1 2. Вычесть 3 3. Найти целую часть от деления на 2
Выполняя первую из них, исполнитель уменьшает число на экране на 1, выполняя вторую – уменьшает на 3, выполняя третью – делит на 2 нацело, отбрасывая остаток. Сколько существует программ, для которых при исходном числе 19 результатом является число 3, и при этом траектория вычислений содержит число 10 и не содержит числа 7?
133
def f(x, y): if x == y: return 1 if x < y or x == 7: return 0 return f(x - 1, y) + f(x - 3, y) + f(x // 2, y) print(f(19, 10) * f(10, 3))
У исполнителя имеются три команды, которые обозначены латинскими буквами:
A. Вычесть 1 B. Вычесть 2 C. Найти целую часть от деления на 3
Первая команда уменьшает число на 1, вторая – уменьшает его на 2, третья – находит целую часть от деления числа на 3. Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 16 результатом является число 6, при этом траектория вычислений содержит число 11?
64
def f(x,y): if x==y: return 1 if x < y: return 0 return f(x-1,y)+f(x-2,y)+f(x//3,y) print(f(16,11)*f(11,6))
У исполнителя имеются две команды, которые обозначены латинскими буквами:
A. Вычесть 1 B. Найти целую часть от деления на 2
Первая команда уменьшает число на 1, вторая – находит целую часть от деления числа на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 30 результатом является число 1, при этом траектория вычислений содержит число 8?
288
def f(x,y): if x==y: return 1 if x < y: return 0 return f(x-1,y)+f(x//2,y) print(f(30,8)*f(8,1))
У исполнителя имеются три команды, которые обозначены латинскими буквами:
A. Прибавить 1 B. Прибавить 2 С. Прибавить 3
Первая команда увеличивает число на 1, вторая – увеличивает на 2, третья – увеличивает на 3. Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 5 результатом является число 11, при этом траектория вычислений содержит число 7?
14
def f(x,y): if x==y: return 1 if x > y: return 0 return f(x+1,y)+f(x+2,y)+f(x+3,y) print(f(5,7)*f(7,11))
У исполнителя имеются две команды, которые обозначены латинскими буквами:
A. Вычесть 2 B. Найти целую часть от деления на 2
Первая команда уменьшает число на 2, вторая – находит целую часть от деления числа на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 32 результатом является число 1, при этом траектория вычислений содержит число 8?
42
def f(x,y): if x==y: return 1 if x < y: return 0 return f(x-2,y)+f(x//2,y) print(f(32,8)*f(8,1))
У исполнителя имеются две команды, которые обозначены латинскими буквами:
A. Вычесть 2 B. Найти целую часть от деления на 2
Первая команда уменьшает число на 2, вторая – находит целую часть от деления числа на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 32 результатом является число 1, при этом траектория вычислений содержит число 14?
54
def f(x,y): if x==y: return 1 if x < y: return 0 return f(x-2,y)+f(x//2,y) print(f(32,14)*f(14,1))
У исполнителя имеются две команды, которые обозначены латинскими буквами:
A. Вычесть 2 B. Найти целую часть от деления на 2
Первая команда уменьшает число на 2, вторая – находит целую часть от деления числа на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 38 результатом является число 2, при этом траектория вычислений содержит число 16?
36
def f(x,y): if x==y: return 1 if x < y: return 0 return f(x-2,y)+f(x//2,y) print(f(38,16)*f(16,2))
У исполнителя имеются три команды, которые обозначены латинскими буквами:
A. Вычти 1 B. Вычти 6 C. Найди целую часть от деления на 2
Первая команда уменьшает число на экране на 1, вторая команда уменьшает это число на 6, третья команда делит число нацело на 2. Программа для исполнителя – это последовательность команд. Сколько существует таких программ, которые исходное число 34 преобразуют в число 6, и при этом траектория вычислений содержит числа 19 и 29 и не содержит числа 24?
115
def f(x,y): if x==y: return 1 if x < y or x == 24: return 0 return f(x-1,y) + f(x-6,y) + f(x//2,y) print(f(34,29) * f(29,19) * f(19,6))
У исполнителя имеются три команды, которые обозначены латинскими буквами:
A. Прибавь 1 B. Прибавь 2 C. Умножь на 2
Программа для исполнителя – это последовательность команд. Сколько существует программ, которые преобразуют число 7 в число 51, и при этом траектория вычислений содержит числа 13 и 15, но не содержит числа 35?
174034068
def f(x,y): if x==y: return 1 if x > y or x == 35: return 0 return f(x+1,y) + f(x+2,y) + f(x*2,y) print(f(7,13) * f(13,15) * f(15,51))
У исполнителя имеются три команды, которые обозначены латинскими буквами:
A. Прибавь 3 B. Прибавь 7 C. Умножь на 3
Программа для исполнителя – это последовательность команд. Сколько существует таких программ, которые исходное число 12 преобразуют в 89, и при этом траектория вычислений программы содержит числа 40 и 72 и не содержит 56?
324
def f(x,y): if x==y: return 1 if x>y or x==56: return 0 return f(x+3,y)+f(x+7,y)+f(x*3,y) print(f(12, 40) * f(40,72) * f(72,89))
Исполнитель преобразует число на экране. У исполнителя есть две команды, которые обозначены латинскими буквами:
A. Вычти 3 B. Найди целую часть от деления на 3
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 81 результатом является число 3, и при этом траектория вычислений содержит число 27? Траектория вычислений программы - это последовательность результатов выполнения всех команд программы.
10
def f(x,y): if x==y: return 1 if x < y: return 0 return f(x-3,y) + f(x//3, y) print(f(81,27)*f(27,3))
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Вычесть 1 B. Вычесть 2 C. Найти целую часть от деления на 3
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 19 результатом является число 4, при этом траектория вычислений содержит число 6 и не содержит 13?
212
def f(x,y): if x==y: return 1 if x
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Вычесть 1 B. Вычесть 4 C. Найти целую часть от деления на 3
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 19 результатом является число 2, при этом траектория вычислений не содержит числа 8 и содержит 14?
69
def f(x,y): if x==y: return 1 if x
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Прибавить 1 B. Прибавить 2 C. Умножить на 2
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 3 результатом является число 20, при этом траектория вычислений содержит число 7 и не содержит 10?
792
def f(x,y): if x==y: return 1 if x>y or x==10: return 0 return f(x+1,y)+f(x+2,y)+f(x*2,y) print(f(3,7)*f(7,20))
У исполнителя есть три команды, которые обозначены латинскими буквами:
A. Прибавить 1 B. Умножить на 3 C. Прибавить 5
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 2 результатом является число 21, при этом траектория вычислений содержит число 7 и не содержит 16?
45
def f(x,y): if x==y: return 1 if x>y or x==16: return 0 return f(x+1,y)+f(x*3,y)+f(x+5,y) print(f(2,7)*f(7,21))
У исполнителя есть две команды, которые обозначены латинскими буквами:
A. Вычти 2 B. Найди целую часть от деления на 2
Программа для исполнителя - это последовательность команд. Сколько существует программ, для которых при исходном числе 48 результатом является число 2, при этом траектория вычислений содержит число 16?
72
def f(x,y): if x == y: return 1 if x < y: return 0 return f(x - 2, y)+f(x // 2, y) print( f(48, 16) * f(16, 2) )