23.05 Количество программ из A в B смешанное
Ошибка.
Попробуйте повторить позже
Исполнитель Стив преобразует число, записанное на экране.
У исполнителя есть три команды, которым присвоены номера:
- Прибавить 4
- Прибавить 5
- Умножить на 2
Первая команда увеличивает число на экране на , вторая увеличивает на , третья увеличивает число на экране в раза. Программа для Стива — это последовательность команд.
Сколько существует программ, для которых при исходном числе результатом является число и при этом траектория вычислений содержит число , но не содержит число и ? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы при исходном числе траектория будет состоять из чисел , , .
Решение №1
a = [0] * 24 a[3] = 1 for i in range(4, 24): a[i] = a[i - 4] + a[i - 5] + a[i // 2] * (i % 2 == 0) if i == 11: for j in range(i): a[j] = 0 if i == 13 or i == 18: a[i] = 0 print(a[23])
Решение №2
Составим фомулы для решения этой задачи:
— если число не делится на 2.
— если число делится на 2.
Заметим, что число 3 мы получаем одним способом — пустой программой. Числа 4, 5 мы получить не можем данными командами. Заполним таблицу:
Ошибка.
Попробуйте повторить позже
Исполнитель Школково преобразует число, записанное на экране.
У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1,
2. Прибавить 2.
Первая команда увеличивает число на экране на 1, вторая увеличивает его на 2. Программа для исполнителя Школково — это последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является число 19 и при этом траектория вычислений содержит число 8 и не содержит число 14? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 10, 11.
Пусть — количество программ, которые число 1 преобразуют в число n. Тогда верно следующее утверждение:
Заполним таблицу по данной формуле до 7:
Продолжим заполнять таблицу:
Заполним таблицу до конца:
Ошибка.
Попробуйте повторить позже
Исполнитель Ови преобразует число, записанное на экране.
У исполнителя есть команды, которым присвоены номера:
1. Прибавить 1,
2. Прибавить 3,
3. Прибавить 5,
4. Умножить на 2.
Первая команда увеличивает число на экране на 1, вторая — на 3, третья — на 5, четвертая увеличивает число на экране в 2 раза. Программа для Ови — последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является число 32 и при этом траектория вычислений содержит числа 13 и 25, но не содержит 28 и 31? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 1423 при сиходном числе 5 траектория будет состоять из чисел 6, 12, 15, 20.
Составим формулы для решения этой задачи:
— если число не делится на 2.
— если число делится на 2.
Заполним таблицу:
Так как траектория должна прохоить через число 13, то все последующие числа мы можем получить только через него. Продолжим заполнять таблицу:
Аналогично траектория должна проходить через число 25. Заполним таблицу до конца, учитывая, что траектория не должна проходить через числа 28 и 31. Значит и .
Ошибка.
Попробуйте повторить позже
Исполнитель Боб преобразует число , записанное на экране.
У исполнителя есть команды, которым присвоены номера:
Прибавить 1,
Умножить на 2,
Умножить на 3.
Первая команда увеличивает число на экране на 1, вторая увеличивает в 2 раза, третья увеличивает число на экране в 3 раза. Программа для Стива — это последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является число 32 и при этом траектория вычислений содержит число 17, но не содержит числа 11 и 14? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 123 при исходном числе 7 траектория будет состоять из чисел 8, 16, 48.
Составим формулы для решения этой задачи:
— если число не делится ни на 2, ни на 3.
— если число не делится на 3.
— если число не делится на 2.
— если число делится на 2 и на 3.
Заполним таблицу по данным формулам и со всеми условиями траектории.
Так как траектория должна проходить через число 17, то последующие числа мы можем получить только командой 1. Количество программ изменится только на . Отсюда следует, что ответ 20.
Ошибка.
Попробуйте повторить позже
Исполнитель преобразует число, записанное на экране.
У исполнителя есть команды, которым присвоены номера:
1. Прибавить 1,
2. Прибавить 3,
3. Умножить на 3.
Первая команда увеличивает число на экране на 1, вторая – на 3, третья – утраивает число на экране. Программа для исполнителя— это последовательность команд.
Сколько существует программ, для которых при исходном числе 2 результатом является число 33 и при этом траектория вычислений содержит число 12 и не содержит число 27? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 231 при исходном числе 6 траектория будет состоять из чисел 9, 27, 28.
Пусть — количество программ, которые число 1 преобразуют в число n. Тогда верно следующее утверждение:
— если число не делится на 3.
— если число делится на 3.
Заполним таблицу по формулам до 11:
Продолжим заполнять таблицу:
Заполним таблицу до конца:
Ошибка.
Попробуйте повторить позже
Исполнитель преобразует число, записанное на экране.
У исполнителя есть три команды, которым присвоены номера:
Прибавить 2,
Прибавить 3,
Умножить на 2.
Первая команда увеличивает число на экране на 2, вторая увеличивает на 3, третья увеличивает число на экране в 2 раза. Программа для— это последовательность команд.
Сколько существует программ, для которых при исходном числе 1 результатом является число 15 и при этом траектория вычислений содержит число 6 и 9, но не содержит число 13? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 123 при исходном числе 7 траектория будет состоять из чисел 9, 12, 24.
Пусть — количество программ, которые число 1 преобразуют в число n. Тогда верно следующее утверждение:
— если число не делится на 2.
— если число делится на 2.
Заполним таблицу по данной формуле до 6:
Ошибка.
Попробуйте повторить позже
Геральт копит чеканные монеты, количество которых записано на экране.
У него есть варианты, которым присвоены номера:
1. Прибавить 5 монет, убив утопца,
2. Прибавить 10 монет, выполнив заказ на призрака,
3. Увеличить количество монет в 2 раза, сыграв в гвинт.
Первый вариант учеличивает количество монет на 5, второй — на 10, третий — умножает количество монет на 2. Программа для Геральта из Ривии — это последовательность вариантов.
Геральту нужно накопить 100 монет, чтобы выкупить Лютика из плена эльфов.
Сколько существует программ, для которых при исходном количестве монет 15 является результатом 100 монет. При этом траектория вычислений содержит любимое число Геральта — 50 и не содержит числа 25 и 40? Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 123 при исходном числе 7 траектория будет состоять из чисел 12, 22, 44.
Составим формулы:
— если число не делится на 2.
— если число делится на 2.
Заметим, что количество программ будет меняться только на числах кратных 5. Заполним таблицу по данным формулам, учитывая условия траектории:
Лютик точно будет спасён!
Ошибка.
Попробуйте повторить позже
Исполнитель ИВ преобразует число на экране.
У исполнителя есть три команды, которым присвоены номера:
. Прибавить
. Умножить на
. Прибавить
Первая команда увеличивает число на экране на , вторая умножает его на , третья увеличивает на .
Программа для исполнителя ИВ — это последовательность команд.
Сколько существует программ, которые преобразуют исходное число в число , и при этом траектория
вычислений содержит число и не содержит числа ?
a = [0]*17 a[1] = 1 for i in range(2, 17): a[i] = a[i-1] if i > 5: a[i] += a[i-5] if i % 2 == 0: a[i] += a[i//2] if i == 10: a[i] = 0 if i == 8: for j in range(8): a[j] = 0 print(a[16])
Ошибка.
Попробуйте повторить позже
Исполнитель АС преобразует число на экране.
У исполнителя есть три команды, которым присвоены номера:
- Прибавить ;
- Умножить на ;
- Умножить на .
Первая команда увеличивает число на экране на , вторая умножает его на , третья умножает на .
Программа для исполнителя АС — это последовательность команд. Сколько существует программ, которые преобразуют исходное число в число , и при этом траектория вычислений содержит число и не содержит числа ?
a = [0]*51 a[1] = 1 for i in range(2, 51): a[i] = a[i-1] if i % 2 == 0: a[i] += a[i//2] if i % 3 == 0: a[i] += a[i//3] if i == 14: for j in range(14): a[j] = 0 if i == 16: a[i] = 0 print(a[50])
Ошибка.
Попробуйте повторить позже
Исполнитель преобразует число на экране.
У исполнителя есть три команды, которым присвоены номера:
- Прибавить
- Прибавить
- Умножить на
Первая команда увеличивает число на экране на , вторая увеличивает его на , третья — умножает на .
Программа для исполнителя — это последовательность команд. Сколько существует программ, которые преобразуют исходное число в число , и при этом траектория вычислений содержит число и не содержит числа ?
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы при исходном числе траектория будет состоять из чисел , , .
a = [0]*16 a[2] = 1 for i in range(3, 16): a[i] = a[i-1]+a[i-2] if i % 3 == 0: a[i] += a[i//3] if i == 10: for j in range(1, i): a[j] = 0 if i == 14: a[i] = 0 print(a[15])
Ошибка.
Попробуйте повторить позже
Исполнитель Желаний преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:
1. Прибавить 1
2. Прибавить 3
3. Умножить на 4
Первая команда увеличивает число на экране на , вторая на — , третья умножает его на .
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числе результатом является число и при этом траектория вычислений содержит число и не содержит числа ?
a = [0]*21 a[3] = 1 for i in range(4, 21): a[i] = a[i-1]+a[i-3] if i % 4 == 0: a[i] += a[i//4] if i == 12: for j in range(i): a[j] = 0 if i == 7: a[i] = 0 print(a[20])
Ошибка.
Попробуйте повторить позже
Исполнитель Желаний преобразует число на экране. У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Умножить на 2
Первая команда увеличивает число на экране на 1, вторая умножает его на 2.
Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 3 результатом является число 45 и при этом траектория вычислений содержит число 10 и не содержит число 15?
Ответ дайте в шестеричной системе счисления
def perevod(n, a): s = ’’ while n != 0: s = str(n % a) + s n //= a return s a = [0]*46 a[3] = 1 for i in range(4, 46): a[i] = a[i-1] if i % 2 == 0: a[i] += a[i//2] if i == 15: a[i] = 0 if i == 10: for j in range(i): a[j] = 0 print(perevod(a[45], 6))
Ошибка.
Попробуйте повторить позже
Исполнитель Чипсы с крабом преобразует число, записанное на экране. У исполнителя есть команды, которым присвоены номера:
- Прибавить
- Умножить на
Первая команда увеличивает число на экране на вторая — увеличивает число в раза. Программа для исполнителя Крабоед — это последовательность команд. Сколько существует программ, для которых при исходном числе результатом является число и при этом траектория вычислений не содержит и содержит ?
Решение 1 (Рекурсия)
def f(s, fi, flag): if s > fi: return 0 if s == 99: return 0 if s == 50: flag = True if s == fi and flag: return 1 return f(s + 2, fi, flag) + f(s * 3, fi, flag) print(f(10, 100, False))
Решение 2 (Динамика)
a = [0] * 101 a[10] = 1 for i in range(11, 101): a[i] = a[i - 2] + a[i // 3] * (i % 3 == 0) if i == 99: a[i] = 0 if i == 50: for j in range(i): a[j] = 0 print(a[100])
Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
- Прибавить
- Умножить на
- Возвести в третью степень
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числe результатом является число , при этом траектория вычислений не содержит числа , но содержит число .
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы при исходном числе траектория будет состоять из чисел .
Решение 1 (Рекурсия)
def f(st, fn, flag, flag_number, exit_number): if st == fn and flag: return 1 if st > fn or st == exit_number: return 0 if st == flag_number: # поднимаем флаг, если дошли до требуемого значения flag = True x = f(st + 3, fn, flag, flag_number, exit_number) y = f(st * 2, fn, flag, flag_number, exit_number) z = f(st ** 3, fn, flag, flag_number, exit_number) return x + y + z print(f(3, 96, False, 12, 25))
Решение 2 (Динамика)
a = [0] * (96 ** 3 + 1) a[3] = 1 for i in range(3, 96): if i == 12: b = a[i] a = [0] * (96 ** 3 + 1) a[i] = b if i != 25: a[i + 3] += a[i] a[i * 2] += a[i] a[i ** 3] += a[i] print(a[96])
Решение 3 (Динамика)
a = [0] * 97 a[3] = 1 for i in range(4, 97): a[i] = a[i - 3] + a[i // 2] * (i % 2 == 0) x = int(i ** (1 / 3)) if x ** 3 == i: a[i] += a[x] if i == 12: for j in range(i): a[j] = 0 if i == 25: a[i] = 0 print(a[96])
Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить 1
2. Если число кратно , прибавить к нему это же число, умноженное на
3. Умножить на 2
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числe 3 результатом является число 50, при этом программа содержит 20 команд, а траектория обязательно проходит через число 15?
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы 123 при исходном числе 7 траектория будет состоять из чисел 8, 14, 28.
Стоит сказать, что динамическое решение данной задачи более трудоемкое и занимает большее количество времени для исполнения. Поэтому рекомендуется использовать именно рекурсивную реализацию.
Решение 1 (Рекурсия)
def f(st, fn, flag, flag_number, count, end_count): if st == fn and count == end_count and flag: return 1 if st > fn or count > end_count: return 0 if st == flag_number: flag = True x = f(st + 1, fn, flag, flag_number, count + 1, end_count) y = f(st * 2, fn, flag, flag_number, count + 1, end_count) z = f(st + st * 0.75, fn, flag, flag_number, count + 1, end_count) * \ (st % 8 == 0) return x + y + z print(f(3, 50, False, 15, 0, 20))
Решение 2 (Динамика)
ans = [] ans.append((3, 0)) for operations in range(20): can_get = [] for i in ans: a, flag = i if a + 1 == 15: can_get.append((a + 1, 1)) else: can_get.append((a + 1, flag)) if a % 8 == 0: if int(a + a * 0.75) == 15: can_get.append((int(a + a * 0.75), 1)) else: can_get.append((int(a + a * 0.75), flag)) can_get.append((a * 2, flag)) ans = can_get otv = 0 for i in ans: a, flag = i if (a == 50) and (flag): otv += 1 print(otv)
Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить 2, если число кратно 3
2. Прибавить 3, если число кратно 2
3. Прибавить 1, если число не кратно ни 2, ни 3
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числe 3 результатом является число 27, при этом программа содержит 12 команд, а траектория обязательно не проходит через число 22?
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 3 траектория будет состоять из чисел 5, 6, 9.
Решение 1 (Рекурсия)
def f(st, fn, exit_number, count, end_count): if st == fn and count == end_count: return 1 if st > fn or count > end_count or st == exit_number: return 0 x = f(st + 2, fn, exit_number, count + 1, end_count) * (st % 3 == 0) y = f(st + 3, fn, exit_number, count + 1, end_count) * (st % 2 == 0) z = f(st + 1, fn, exit_number, count + 1, end_count) * (st % 2 != 0 and st % 3 != 0) return x + y + z print(f(3, 27, 22, 0, 12))
Решение 2 (Динамика)
ans = [] ans.append(3) for operations in range(12): can_get = [] for i in ans: if i == 22: continue if i % 3 == 0: can_get.append(i + 2) if i % 2 == 0: can_get.append(i + 3) if (i % 2 != 0) and (i % 3 != 0): can_get.append(i + 1) ans = can_get print(ans.count(27))
Ошибка.
Попробуйте повторить позже
Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:
1. Прибавить 3
2. Прибавить 1
3. Прибавить само число
Программа для исполнителя — это последовательность команд.
Сколько существует программ, для которых при исходном числe 1 результатом является число 28, при этом программа содержит 9 команд, а траектория обязательно не проходит через число 11 и проходит через 13?
Траектория вычислений — это последовательность результатов выполнения всех команд программы. Например, для программы 123 при исходном числе 2 траектория будет состоять из чисел 5, 6, 12.
Решение 1 (Рекурсия)
def f(st, fn, flag, flag_number, exit_number, count, end_count): if st == fn and count == end_count and flag: return 1 if st > fn or count > end_count or st == exit_number: return 0 if st == flag_number: flag = True x = f(st + 1, fn, flag, flag_number, exit_number, count + 1, end_count) y = f(st + 3, fn, flag, flag_number, exit_number, count + 1, end_count) z = f(st * 2, fn, flag, flag_number, exit_number, count + 1, end_count) return x + y + z print(f(1, 28, False, 13, 11, 0, 9))
Решение 2 (Динамика)
ans = [] ans.append((1, 0)) for operations in range(9): can_get = [] for i in ans: a, flag = i if a == 11: continue if a + 3 == 13: can_get.append((a + 3, 1)) else: can_get.append((a + 3, flag)) if a + 1 == 13: can_get.append((a + 1, 1)) else: can_get.append((a + 1, flag)) if 2 * a == 13: can_get.append((2 * a, 1)) else: can_get.append((2 * a, flag)) ans = can_get otv = 0 for i in ans: a, flag = i if (a == 28) and (flag): otv += 1 print(otv)
Ошибка.
Попробуйте повторить позже
У исполнителя Калькулятор три команды, которым присвоены номера:
1. прибавь 1
2. прибавь 2
3. умножь на 3
Первая команда увеличивает число на экране на 1, вторая увеличивает это число на 2, третья умножает это число на 3. Программа для исполнителя – это последовательность команд. Сколько существует программ, которые преобразуют исходное число 3 в число 22, и при этом траектория вычислений содержит число 10 и не содержит чисел 8 и 15?
a = [0] * 23 a[3] = 1 for i in range(4, 23): a[i] = a[i - 1] + a[i - 2] if i % 3 == 0: a[i] += a[i // 3] a[8], a[15] = 0, 0 if i == 10: for j in range(10): a[j] = 0 print(a[22])
Ошибка.
Попробуйте повторить позже
У исполнителя Калькулятор три команды, которым присвоены номера:
1. прибавь 1
2. прибавь 2
3. умножь на 3
Первая команда увеличивает число на экране на 1, вторая увеличивает это число на 2, третья умножает это число на 3. Программа для исполнителя – это последовательность команд. Сколько существует программ, которые преобразуют исходное число 1 в число 28, и при этом траектория вычислений содержит число 8 и не содержит чисел 10 и 11?
a = [0] * 29 a[1] = 1 for i in range(2, 29): a[i] = a[i - 1] + a[i - 2] if i % 3 == 0: a[i] += a[i // 3] a[10], a[11] = 0, 0 if i == 8: for j in range(8): a[j] = 0 print(a[28])
Ошибка.
Попробуйте повторить позже
Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера:
- Прибавить 1
- Прибавить 2
- Вычесть 3
Сколько существует программ, для которых при исходном числе 20 результатом будет являться число 12? При этом траектория вычисления содержит только числа от 10 до 30 (включительно и без повторов).
def f(s): a = s[-1] if len(s) > 1 and a == 12: return 1 if a < 10 or a > 30 or (a in s[:-1]): return 0 return sum(f(s + [a + h]) for h in [2, 1, -3]) print(f([20]))