Найти в Дзене

Разбор номера 5640 ЕГЭ по информатике #23

Оглавление

Условие: № 5640 (Уровень: Средний)
Статья подготовлена командой itpy, подписывайтесь на наш телеграм канал!

Исполнитель преобразует число на экране.
У исполнителя есть две команды, которые обозначены латинскими буквами:

A.  Вычти 4
B.  Вычти сумму цифр числа

Программа для исполнителя – это последовательность команд.
Сколько существует программ, для которых при исходном числе 36 результатом является число 2, и при этом траектория вычислений содержит число 14?
Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. 
Например, для программы ABA при исходном числе 33 траектория будет состоять из чисел 29, 18, 14.

Решение через Python:

Вариант решения №1
Вариант решения №1
def MySum(x):
summ = sum([int(i) for i in str(x)])
return summ

def F(a, b):
if a < b:
return 0
elif a == b:
return 1
else:
return F(a-4, b) + F(a - MySum(a), b)

print(F(36, 14) * F(14, 2))

Комментарии к первому решению:

  1. def MySum(x): - объявление функции с именем MySum, которая принимает один аргумент x.
  2. summ = sum([int(i) for i in str(x)]) - вычисление суммы цифр числа x. Каждая цифра из числа x преобразуется в целое число и добавляется в список, затем сумма всех элементов списка присваивается переменной summ.
  3. return summ - возвращение значения переменной summ из функции MySum.
  4. def F(a, b): - объявление функции с именем F, которая принимает два аргумента a и b.
  5. if a < b: - проверка, если значение a меньше значения b.
  6. return 0 - возвращение значения 0, если условие в строке 5 выполняется.
  7. elif a == b: - проверка, если значение a равно значению b.
  8. return 1 - возвращение значения 1, если условие в строке 7 выполняется.
  9. else: - выполнение кода, если ни одно из условий в строках 5 и 7 не выполняется.
  10. return F(a-4, b) + F(a - MySum(a), b) - рекурсивный вызов функции F с измененными аргументами a и b и сложение результатов.
  11. print(F(36, 14) * F(14, 2)) - вызов функции F с аргументами 36 и 14, умножение результата на вызов функции F с аргументами 14 и 2, и вывод результата на экран.
 Вариант решения №2
Вариант решения №2
def MySum(x):
summ = sum([int(i) for i in str(x)])
return summ

def F(a, b):
if a <= b:
return a == b
return F(a-4, b) + F(a - MySum(a), b)

print(F(36, 14) * F(14, 2))

Комментарии ко второму решению:

  1. def MySum(x): - объявление функции с именем MySum, которая принимает один аргумент x.
  2. summ = sum([int(i) for i in str(x)]) - вычисление суммы цифр числа x. Каждая цифра из числа x преобразуется в целое число и добавляется в список, затем сумма всех элементов списка присваивается переменной summ.
  3. return summ - возвращение значения переменной summ из функции MySum.
  4. def F(a, b): - объявление функции с именем F, которая принимает два аргумента a и b.
  5. if a <= b: - проверка, если значение a меньше или равно значению b.
  6. return a == b - возвращение значения True, если a равно b, иначе возвращение значения False.
  7. return F(a-4, b) + F(a - MySum(a), b) - рекурсивный вызов функции F с измененными аргументами a и b и сложение результатов.
  8. print(F(36, 14) * F(14, 2)) - вызов функции F с аргументами 36 и 14, умножение результата на вызов функции F с аргументами 14 и 2, и вывод результата на экран.

Ответ: 7

Читайте нас в телеграмме:

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

Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy
Присоединяйся к нашему Телеграм каналу: t.me/informatika_kege_itpy