Найти в Дзене

Разбор задача 13302 #kege по информатике #ЕГЭ23 номера

Автор: М. Попков Уровень: Сложный У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Приписать справа двоичную запись остатка от деления на 5
Сколько существует программ, которые преобразуют исходное число 1_2 в число 101000101_2 ? Конечно же сложность состоит в том, чтобы правильно понять задумку автора. Посмотрите какое классное решение получается! Информатика ЕГЭ | itpy 🧑‍💻 Наша Stepik подборкой задач
Оглавление

Автор: М. Попков

Уровень: Сложный

Условие задачи:

У исполнителя есть две команды, которым присвоены номера:
1. Прибавить 1
2. Приписать справа двоичную запись остатка от деления на 5
Сколько существует программ, которые преобразуют исходное число 1_2 в число 101000101_2 ?

Теоретическая справка:

Конечно же сложность состоит в том, чтобы правильно понять задумку автора. Посмотрите какое классное решение получается!

Код решения:

Ответ: 53669
Ответ: 53669

Комментарии к коду:

  1. def F(a, b):
    Определяем функцию F с двумя параметрами a и b, которые являются целыми числами.
  2. if a >= b:
    Проверяем, если a больше или равно b. Это условие служит для завершения рекурсии.
  3. return a == b
    Если a равно b, возвращаем True, иначе возвращаем False.
  4. return F(a+1, b) + F(int(f'{a:b}' + f'{a % 5:b}', 2), b)
    Рекурсивно вызываем функцию F дважды с измененными параметрами и суммируем результаты.
  5. print(F(int('1', 2), int('101000101', 2)))
    Выводим результат вызова функции F, передавая ей целочисленные значения, полученные из двоичных строк '1' и '101000101'.

Информатика ЕГЭ | itpy 🧑‍💻

Наша Stepik подборкой задач