
B. рекурсия из ЕГЭ Ограничение времени 2 секунды Ограничение памяти 64Mb Ввод recursion.in Вывод
recursion.out В этом году выпускники одиннадцатых классов будут сдавать ЕГЭ по информатике на компьютерах. Одна из задач предполагает умение анализировать работу рекурсивного алгоритма. Мы предлагаем Вам ’олимпиадную’ версию такой задачи. Исходный текст программы, используемой в задаче, размещен на сайте подготовки к ЕГЭ ’kpolyakov.spb.ru’ Рассмотрим функцию, приведенную ниже на трех языках программирования. Python def F( n ): print(n+1) if n > 1: print(2*n) F(n-1) F(n-3) Pascal procedure F( n: integer ); begin writeln(n+1); if n > 1 then begin writeln(2*n); F(n-1); F(n-3); end; end; C++ void F( int n ) { cout 1 ) { cout << 2*n << endl; F(n-1); F(n-3); } } Напишите программу, которая определяет, сколько двоек выводится на экран в результате вызова функции F(z). Ваша программа должна учитывать все цифры ’2’, выводимые программой, даже если она в составе числа. Формат ввода В единственной строке входного файла recursion.in записано число z. ( 1 ≤ z ≤ 5 0 ) Формат вывода В файл recursion.out следует вывести единственное число - ответ к задаче.

Ответы на вопрос

Ответ:
кра6ввш56вкк6вшк6ыык6вш6ыгн3



Для решения данной задачи, нам необходимо анализировать, сколько раз в функции F(n)
на различных языках программирования выводится цифра "2".
Обратите внимание, что во всех трех версиях функции F(n)
, цифра "2" выводится в двух местах:
- В первом условном операторе, где
if n > 1
, выводится2*n
. - В рекурсивных вызовах
F(n-1)
иF(n-3)
.
Теперь давайте напишем программу, которая будет анализировать данную логику для всех значений вызова функции и считать количество цифр "2", которые выводятся:
pythondef count_twos(n):
if n > 1:
return 1 + count_twos(n - 1) + count_twos(n - 3)
return 0
# Чтение входных данных из файла
with open("recursion.in", "r") as file:
z = int(file.readline().strip())
# Вычисление количества двоек
result = count_twos(z)
# Запись результата в выходной файл
with open("recursion.out", "w") as file:
file.write(str(result))
Этот код читает значение z
из входного файла, затем использует рекурсивную функцию count_twos
для подсчета количества цифр "2", которые выводятся при вызове F(z)
. Результат записывается в выходной файл.
Сохраните данный код в файле с расширением .py
, например recursion.py
, затем выполните его на вашем компьютере, предоставив входной файл recursion.in
и получив выходной файл recursion.out
с ответом на задачу.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili