Ошибка.
Попробуйте повторить позже
Исполнитель Крабокорм преобразует число на экране.
У исполнителя есть три команды, которым присвоены номера:
1. Вычесть
2. Вычесть
3. Взять целую часть от деления на .
Первая команда уменьшает число на экране на , вторая уменьшает число на экране на , третья заменяет число на экране на целую часть от деления на .
Программа для исполнителя Крабокорм - это последовательность команд.
Сколько существует программ, которые преобразуют исходное число в число и при этом траектория вычислений содержит число ?
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы при исходном числе траектория будет состоять из чисел , , .
a = [0] * 39 * 3 a[38] = 1 for i in range(37, 0, -1): a[i] = a[i + 1] + a[i + 3] + a[i * 3] + a[i * 3 + 1] + a[i * 3 + 2] if i == 14: for j in range(38, 14, -1): a[j] = 0 print(a[1])
Ошибка.
Попробуйте повторить позже
Исполнитель Крабокрыл преобразует число на экране. У исполнителя есть 3 команды:
- Вычесть
- Поделить на , если число кратно
- Поделить на , если число кратно
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числe результатом является число ?
Решение 1 (Рекурсия)
def f(st, fn): if st == fn: return 1 if st < fn: return 0 x = f(st // 3, fn) * (st % 3 == 0) y = f(st // 2, fn) * (st % 2 == 0) z = f(st - 3, fn) return x + y + z print(f(30, 3))
Решение 2 (Динамика)
a = [0] * 31 a[30] = 1 for i in range(30, 1, - 1): a[i - 3] += a[i] a[i // 2] += a[i] * (i % 2 == 0) a[i // 3] += a[i] * (i % 3 == 0) print(a[3])
Решение 3 (Динамика)
a = [0] * 100 a[30] = 1 for i in range(29, 2, -1): a[i] = a[i + 3] + a[i * 3] + a[i * 2] print(a[3])
Ошибка.
Попробуйте повторить позже
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
1. Вычесть 1
2. Вычесть 3
3. Взять остаток от деления на 4
Команда 3 выполняется только для чисел, больших, чем 4. Программа для исполнителя — это последовательность команд.
Сколько существует таких программ, которые исходное число 22 преобразуют в число 2?
a = [0]*25 a[22] = 1 for i in reversed(range(2, 22)): a[i] = a[i+1] + a[i+3] if i < 4: for j in range(i+4, 23, 4): a[i] += a[j] print(a[2])
Ошибка.
Попробуйте повторить позже
Исполнитель POLKOVNIK KONDRATENKO преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Разделить на с округлением вниз (выполнить целочисленное деление на )
2. Вычесть
Первая команда уменьшает число на экране в раза, вторая — уменьшает его на . Программа для исполнителя — это последовательность команд.
Определите количество программ, которые число преобразуют в число .
Решение 1 (Рекурсия)
def f(a, b): if a == b: return 1 if a < b: return 0 if a > 1: return f(a // 2, b) + f(a - 1, b) return f(a - 1, b) print(f(64, 14))
Решение 2 (Динамика)
a = [0] * 65 a[64] = 1 for i in range(64, 14, -1): a[i // 2] += a[i] a[i - 1] += a[i] print(a[14])
Ошибка.
Попробуйте повторить позже
Исполнитель преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
- Вычесть
- Вычесть
- Взять остаток от деления на
Команда выполняется только для чисел, больших, чем . Программа для исполнителя — это последовательность команд. Сколько существует таких программ, которые исходное число преобразуют в число ?
a = [0]*23 a[22] = 1 for i in reversed(range(2, 23)): a[i-1] += a[i] a[i-3] += a[i] if i > 4: a[i % 4] += a[i] print(a[2])