Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w. На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F ложна. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z. Все строки в представленном фрагменте разные.
| Перем.1 | Перем.2 | Перем.3 | Перем.4 |
|---|---|---|---|
| ??? | ??? | ??? | ??? |
| 0 | |||
| 1 | 0 | 0 | |
| 1 | 0 | 0 |
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (без разделителей).
Спрятать решение
Решение.
Рассмотрим данное выражение. Преобразуем логическое выражение (x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w и получим систему, при которой оно ложно:
Cразу видно, что первый столбец это w, поскольку w всегда должна равняться единице. Также, ясно, что x это переменная 4, так как Из первого выражения x ∧ ¬y и последней строчке таблицы видно, что переменная 3 это y, а вторая переменная это z.
Примечание.
Рассмотрим, как будет выглядеть полная таблица истинности. Переменная w всегда должна принимать значение 1, поэтому в первом столбце во всех строках будет стоять единица. Исходя из условия можно заключить, что во втором столбце в последней строке будет стоять единица, и в первых двух строках третьего столбца тоже будут стоять единицы. В первой четвёртого столбца должна стоять единица, поскольку строки в таблице истинности должны быть разными.
| Перем. 1 | Перем. 2 | Перем. 3 | Перем. 4 |
|---|---|---|---|
| ??? | ??? | ??? | ??? |
| 1 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
Вариант wyzx не подходит, поскольку в первой строке функция F окажется истинной.
Приведем другое решение.
Составим таблицу истинности функции F вручную или при помощи языка Python:
print(«x y z w»)
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
for w in range(0, 2):
if not((x and not(y)) or (y == z) or not(w)):
print(x, y, z, w)
Далее выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z, w.
(0, 0, 1, 1),
(0, 1, 0, 1),
(1, 1, 0, 1).
Заметим, что переменная w всегда должна быть равна 1, поэтому ей соответствует первый столбец заданной таблицы.
Заметим, что вторая и третья строки заданной таблицы, содержащие по два нуля, соответствуют наборам переменных (0, 0, 1, 1) или (0, 1, 0, 1), тогда первая строка соответствует набору (1, 1, 0, 1). Значит, в первой строке z=0, а все остальные переменные равны 1, и переменной z соответствует второй столбец заданной таблицы.
Тогда вторая строка заданной таблицы, в которой переменная z также равна 0, соответствует набору (0, 1, 0, 1), в котором х=0, а остальные переменные равны 1, поэтому переменной х соответствует четвертый столбец таблицы.
Тогда переменной y соответствует третий столбец.
Ответ: wzyx.
Источник: ЕГЭ — 2018. Досрочная волна. Вариант 1., ЕГЭ — 2018. Досрочная волна. Вариант 2.
Здравствуйте, дорогие друзья! Сегодня разберём, как решать второе задание из ЕГЭ по информатике 2020.
Во втором задании ЕГЭ по информатике у нас обычно есть логическая функция, которая зависит от логических переменных. Логические переменные могут принимать только два значения: 0 (Ложь) или 1 (Истина).
С логическими переменными можно производить логические операции. При решении второго задания из ЕГЭ по информатике необходимо твёрдо знать каждую логическую операцию, и давайте рассмотрим их.
- () — операции в скобках
- ¬ — логическое отрицание
- ∧ — логическое умножение
- ∨ — логическое сложение
- ⟶ — следование
- ≡ — равнозначность
Ещё соотношения:
Передём к решению задач из ЕГЭ по информатике
Логическая функция F задаётся выражением z ∧ ¬y ∧ (w → x). Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Видим, что у функции основным действием является логическое умножение. По таблице видно, что функция имеет значение только 1 . Логическое умножение даёт 1 (единицу) тогда, когда каждое выражение равно 1 (единице). Значит каждое выражение в нашей функции должно равняться единице.
Отсюда видно, что переменная z должна всегда быть равна 1 (единице). Это первый столбец. Отрицание y тоже должно быть 1 (единицей), тогда просто y всегда будет 0 (нулём). Это второй столбец.
Осталось определить положение w и x. Здесь делаем предположение, что в третьем столбце стоит w, а в 4-ом x. Проверяем построчно и видим, что во второй строчке при таком расположении из 1 следует 0, что в итоге приводит выражение (w → x) в 0, а у нас это выражение всегда должно быть 1 (единицей). Значит, мы предположение сделали неверное, и получается x — это третий столбец, а w — четвёртый.
Задача 2 (средний уровень)
Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (y ≡ z) ∨ w.
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Определяем главную логическую операцию («главную скрипку»), которая соединяет разные выражения. Видим, что это логическое сложение.
Во всех строчках таблицы функция принимает значение 0 (ноль). Значит, и каждое выражение должно принимать значение 0 (ноль).
Самым слабым звеном является переменная w, потому что она стоит одна. Переменная w должна равняться всегда 0(нулю) — этому условию может удовлетворить только третий столбец. Значит w стоит на третьем месте.
Следующим слабым звеном является равносильность. Она должна «выдавать» 0 (ноль). Равносильность «выдаёт» 0 (ноль), когда переменные разные!
Проанализируем первый и второй столбец. В третьей строчке, и там, и там, стоит 1 (единица). Значит, первый и второй столбец не могут быть одновременно y и z (или z и y).
Рассмотрим второй и четвёртый столбец. Вторая строчка содержит одинаковое значение 0 (ноль), и там, и там. Значит, второй и четвёртый столбец не могут быть одновременно y и z (или z и y).
Таким образом, y и z (или z и y) будут столбцы первый и четвёртый! И теперь можно расставить недостающие значения в этих столбцах. Расставляем, чтобы были разные значения, а второй столбец получается x.
Осталось разобраться с z и y. Обратимся к первому выражению (x ∧ ¬y) и посмотрим на третью строчку. Если в четвёртом столбце будет стоять y, то отрицание на y превратит ноль(ноль) в 1(единицу) в четвёртой строчке. Тогда окажется, что у x — 1 и ¬y — 1, и выражение (x ∧ ¬y) тоже получится 1(единицей). А у нас каждое выражение должно равняться 0(нулю). Получается y будет стоять в первом столбце, а z в четвёртом.
Тогда ответ будет равен yxwz.
Ответ: yxwz
Мощнейший метод для решения второго задания из ЕГЭ по информатике
Задача 3 (хороший уровень)
Логическая функция F задаётся выражением ((x → y ) ∧ (y → w)) ∨ (z ≡ ( x ∨ y)).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
«Главной скрипкой» в нашей функции является логическое сложение, потому что соединяет два выражения ((x → y ) ∧ (y → w)) и (z ≡ ( x ∨ y)).
Тогда каждое выражение должно равняться 0(нулю).
Теперь кульминация мощнейшего метода. У нас всего 4 переменных. Выпишем все комбинации для 4-х переменных. Таблица будет точно такая же, как мы писали в первом задании (её очень легко составить). Всего получается 16 комбинаций (16 = 2 4 ).
Теперь отметим зелёным плюсом те строчки, которые обращают выражение ((x → y ) ∧ (y → w)) в 0(ноль). Следующий шаг: Отметим галочкой те строчки, которые обращают в ноль второе выражение (z ≡ ( x ∨ y)) (Мы должны искать среди тех, которые уже отмечены плюсом).
При небольшой тренировке анализ подобных выражений занимает сущие секунды!
У нас получается 4 строчки, которые удовлетворяют нашей функции:
Отсюда видно, что переменная z может быть равна только 0(нулю)! Значит, она занимает третий столбец, потому что в остальных столбцах есть хотя бы одна 1(единица).
Переменная w имеет только одну 1(единицу). Значит, её ставим во второй столбец, потому что в первом и четвёртом уже по 2 единицы минимум, а третий уже занят z.
Теперь находим строчку c 1(единицей) в переменной w (Таблица данная в условии задачи) Кто в этой строчке будет иметь единицу (кроме w) — будет x! Это четвёртый столбец! Значит, x — это четвёртый столбец. Переменной y — достаётся первый столбец
Ответ: ywzx.
На этом всё! Сегодня рассмотрели теорию и основные методы для эффективного решения второго задания из ЕГЭ по информатике!
Строки с пропущенными значениями 2 задание егэ информатика как решать
Тип 2 № 14688
Логическая функция F задаётся выражением (x ∨ y) → (z ≡ x).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z.
| Переменная 1 | Переменная 2 | Переменная 3 | Функция |
|---|---|---|---|
| . | . | . | F |
| 0 | 0 | 0 | |
| 0 | 0 |
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала – буква, соответствующая первому столбцу; затем – буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
| Переменная 1 | Переменная 2 | Функция |
|---|---|---|
| . | . | F |
| 0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Данная импликация принимает значение 0 тогда и только тогда, когда
Пусть x = 0, тогда y = z = 1. В первой строке нет двух единиц, значит, x = 1, и эта переменная находится в первом столбце. Тогда первая строка имеет вид 1 0 0.
Вторая строка должна отличаться от первой, поэтому она имеет вид 1 0 1. Рассмотрим два варианта:
Первый вариант не удовлетворяет системе (*), а второй удовлетворяет.
Приведем другое решение.
Составим таблицу истинности для выражения (x ∨ y) → (z ≡ x) и выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z. Получим следующие наборы:
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
Первая строка таблицы может соответствовать только набору (1, 0, 0), следовательно, первый столбец таблицы соответствует переменной x, и в первом столбце первой строки стоит 1.
Второй столбец таблицы может соответствовать только переменной z, поскольку переменная y принимает нулевое значение только в одном наборе. Тогда третий столбец соответствует переменной y.
Тип 2 № 15097
Логическая функция F задаётся выражением (x ≡ z ) ∨ (x → (y ∧ z)).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z.
. . . F
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Данная импликация принимает значение 0 тогда и только тогда, когда
Пусть . Исходя из системы (*), , тогда . В первой строке нет единицы, значит, переменная x находится в третьем столбце. Тогда первая строка имеет вид 0 0 1.
Вторая строка должна отличаться от первой, поэтому она имеет вид 1 0 1. Рассмотрим два варианта:
Второй вариант не удовлетворяет системе (*), а первый удовлетворяет.
Приведем другое решение.
Составим таблицу истинности для выражения (x ≡ z ) ∨ (x → (y ∧ z)) и выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z. Получим следующие наборы:
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
Первая строка таблицы может соответствовать только набору (1, 0, 0), следовательно, третий столбец — это переменная x. Вторая строка соответствует набору (1, 1, 0), в котором единичное значение принимает также переменная y, следовательно, первый столбец — это переменная у, тогда второй столбец — это переменная z.
Тип 2 № 15124
Логическая функция F задаётся выражением (x ≡ y ) ∨ ((y ∨ z) → x).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.
Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z.
. . . F
В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Данная импликация принимает значение 0 тогда и только тогда, когда
Пусть . Исходя из системы (*), , тогда . В первой строке нет нуля, значит, переменная x находится в первом столбце. Тогда первая строка имеет вид 0 1 1.
Вторая строка должна отличаться от первой, поэтому она имеет вид 0 0 1. Рассмотрим два варианта:
Первый вариант не удовлетворяет системе (*), а второй удовлетворяет.
Приведем другое решение.
Составим таблицу истинности для выражения (x ≡ y ) ∨ ((y ∨ z) → x) и выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z. Получим следующие наборы: (0, 1, 0), (0, 1, 1).
Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.
В обоих наборах переменная x принимает значение 0, значит, ей может соответствовать только первый столбец таблицы. Переменная z принимает значение 1 только в одном наборе, значит, ей может соответствовать только второй столбец таблицы, тогда третий столбец соответствует переменной у.
Тип 2 № 15618
Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w. На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F ложна. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z. Все строки в представленном фрагменте разные.
| Перем.1 | Перем.2 | Перем.3 | Перем.4 |
|---|---|---|---|
| . | . | . | . |
| 0 | |||
| 1 | 0 | 0 | |
| 1 | 0 | 0 |
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (без разделителей).
Рассмотрим данное выражение. Преобразуем логическое выражение (x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w и получим систему, при которой оно ложно:
Cразу видно, что первый столбец это w, поскольку w всегда должна равняться единице. Также, ясно, что x это переменная 4, так как . Из первого выражения x ∧ ¬y и последней строчке таблицы видно, что переменная 3 это y, а вторая переменная это z.
Рассмотрим, как будет выглядеть полная таблица истинности. Переменная w всегда должна принимать значение 1, поэтому в первом столбце во всех строках будет стоять единица. Исходя из условия можно заключить, что во втором столбце в последней строке будет стоять единица, и в первых двух строках третьего столбца тоже будут стоять единицы. В первой четвёртого столбца должна стоять единица, поскольку строки в таблице истинности должны быть разными.
| Перем. 1 | Перем. 2 | Перем. 3 | Перем. 4 |
|---|---|---|---|
| . | . | . | . |
| 1 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
Вариант wyzx не подходит, поскольку в первой строке функция F окажется истинной.
Приведем другое решение.
Составим таблицу истинности функции F и выпишем наборы переменных, при которых функция ложна. Для удобства обозначим эти наборы буквами:
А: (х=0, y=0, z=1, w=1)
Б: (х=0, y=1, z=0, w=1)
В: (х=1, y=1, z=0, w=1)
Заметим, что переменная w всегда должна быть равна 1, поэтому ей соответствует первый столбец заданной таблицы.
Заметим, что вторая и третья строки заданной таблицы, содержащие по два нуля, соответствуют наборам переменных А или Б, тогда первая строка соответствует набору В. Значит, в первой строке z=0, а все остальные переменные равны 1, и переменной z соответствует второй столбец заданной таблицы.
Тогда вторая строка заданной таблицы, в которой переменная z также равна 0, соответствует набору Б, в котором х=0, а остальные переменные равны 1, поэтому переменной х соответствует четвертый столбец таблицы.
Строки с пропущенными значениями 2 задание егэ информатика как решать
Логическая функция F задаётся выражением ¬x ∨ y ∨ (¬z ∧ w).
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F ложна. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z.
| Перем. 1 | Перем. 2 | Перем. 3 | Перем. 4 | Функция |
| . | . | . | . | F |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 0 | 0 |
В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала – буква, соответствующая первому столбцу; затем – буква, соответствующая второму столбцу, и т.д.) Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Дан фрагмент таблицы истинности выражения F.
| x1 | x2 | x3 | x4 | x5 | x6 | x7 | F |
| 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |
| 0 | 1 | 0 | 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
Каким из приведённых ниже выражений может быть F?
1) ¬x1 ∧ x2 ∧ ¬x3 ∧ ¬x4 ∧ x5 ∧ ¬x6 ∧ x7
2) x1 ∨ x2 ∨ x3 ∨ ¬x4 ∨ ¬x5 ∨ ¬x6 ∨ ¬x7
3) x1 ∧ ¬x2 ∧ x3 ∧ ¬x4 ∧ x5 ∧ x6 ∧ ¬x7
4) x1 ∨ ¬x2 ∨ x3 ∨ x4 ∨ ¬x5 ∨ ¬x6 ∨ x7
Логическая функция F задается выражением
Ниже приведен фрагмент таблицы истинности функции F, содержащей все наборы аргументов, при которых функция F истинна.
Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных a, b, c, d.
| Перем.1 | Перем.2 | Перем.3 | Перем.4 | Функция |
| . | . | . | . | F |
| 0 | 1 | 0 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
В ответе запишите буквы в том порядке, в котором идут соответствующие им столбцы.
Миша заполнял таблицу истинности функции
(¬x ∧ ¬y) ∨ (y ≡ z) ∨ w,
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z:
| ? | ? | ? | ? | (¬x∧¬y)∨(y≡z)∨w |
|---|---|---|---|---|
| 0 | 1 | 0 | ||
| 1 | 1 | 0 | 0 | |
| 1 | 1 | 0 | 0 |
Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z.
Логическая функция F задается выражением
¬(z ∨ (y ∧ ¬x))
Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных x, y, z.
| Перем. 1 | Перем. 2 | Перем. 3 | Функция |
|---|---|---|---|
| . | . | . | F |
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 0 |
Видеоразбор
Логическая функция F задается выражением
(x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w
На рисунке приведён фрагмент таблицы истинности функции F, содержащий все наборы аргументов, при которых функция F ложна. Определите, какому столбцу таблицы истинности функции F соответствует каждая из переменных w, x, y, z. Все строки в представленном фрагменте разные.
Задание 2. Информатика. Апробация 10.03.2023
Миша заполнял таблицу истинности логической функции (F)
$$
(x to neg (y to z)) lor w,
$$
но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных (w), (x), (y), (z).
| F | ||||
| 0 | 0 | 0 | ||
| 1 | 0 | |||
| 0 | 1 | 0 |
Определите, какому столбцу таблицы соответствует каждая из переменных (w), (x), (y), (z).
В ответе напишите буквы (w), (x), (y), (z) в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция (F) задана выражением ( neg x lor y), зависящим от двух переменных, а фрагмент таблицы имеет следующий вид:
В этом случае первому столбцу соответствует переменная (y), а второму — переменная (x). В ответе следует написать: (yx).
Решение:
Python
from itertools import permutations, product
def F(x, y, z, w):
return (x <= (not y <= z)) or w
for perm in permutations('xyzw'):
for a,b,c,d,e,f,g in product([0,1], repeat=7):
table = [[a,0,b,0,0],
[1,c,d,e,0],
[0,1,f,g,0]]
if table[0] == table[1]:
continue
if all(F(**dict(zip(perm,row))) == row[-1] for row in table):
print(*perm)
Ответ: (yzxw)
Предмет: Математика,
автор: maryexs
Ответы
Автор ответа: maximzlygostev
1
Ответ:
1) На 12493
2) На 20286
Предыдущий вопрос
Следующий вопрос
Интересные вопросы
Предмет: Алгебра,
автор: leraguritosh
Допоможіть будь ласка! Даю 55 балів! Два числа в сумі дорівнюють 46 , а їх різниця дорівнює 6. Знайдіть менше з цих чисел
2 дня назад
Предмет: Математика,
автор: liydmila2121
Запиши соседей чисел 69,20,47,95,38,51.
2 дня назад
Предмет: Русский язык,
автор: anelturdubekova
Выпишите из текста отрывок, который можно отнести к типу речи — рассуждению. обведите слова маркеры этого типа речи. помогите пожалуйста!!
2 дня назад
Предмет: Математика,
автор: rimys666
Помогите сделать 3 Осень надо
5 лет назад
Предмет: Геометрия,
автор: hgfcvb
Реши урвнение: (у/3)-440=360
5 лет назад
Канал видеоролика: Задачи по математике, информатике
Смотреть видео:
#информатика #егэинформатика #икт #экзамены #егэ_2020 #мгту #школьникам #помощь_студентам #подготовкакэкзаменам
Свежая информация для ЕГЭ и ОГЭ по Информатике (листай):
С этим видео ученики смотрят следующие ролики:

ЕГЭ Информатика 2017. Задание 1
Готовые задания

ЕГЭ Информатика 2017. Задание 3.
Готовые задания

ЕГЭ Информатика 2017. Задание 2
Готовые задания

Егэ информатика 2017. Задание 5.
Готовые задания
Облегчи жизнь другим ученикам — поделись! (плюс тебе в карму):
23.01.2023
- Комментарии
RSS
Написать комментарий
Нет комментариев. Ваш будет первым!
Ваше имя:
Загрузка…
ЕГЭ информатика 16 задание разбор, теория, как решать.
Рекурсивные алгоритмы, (П) — 1 балл
Е16.28 Чему равно значение выражения F(2023) / F(2020)?
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями: F(n) = 1 при n = 1; F(n) = n × F(n − 1), если n > 1. Чему равно значение выражения F(2023) / F(2020)? Ответ: Демонстрационный вариант ЕГЭ 2023 г. – задание №16
Читать далее
Е16.27 Укажите наименьшее значение a, для которого F(a, 0) = 1392781243
Обозначим частное от деления целочисленного натурального числа a на натуральное число b как a div b, а остаток как a mod b. Например, 13 div 3 = 4, 13 mod 3 = 1. Алгоритм вычисления значения функции F(a, b), где a и b – целые неотрицательные числа, задан следующими соотношениями: F(0, b) = b; F(a, …
Читать далее
Е16.26 Чему равно значение функции F(42)?
Алгоритм вычисления значения функции F(n), где n — натуральное число, задан следующими соотношениями: F(n) = 1 при n = 1; F(n) = 3 × n + F(n — 2), если n > 1 и при этом n нечётно, F(n) = 4 × F(n / 2), если n > 1 и при этом n чётно. Чему …
Читать далее
Е16.25 Укажите количество таких значений n < 1 000 000 000, для которых F(n) = 2.
Алгоритм вычисления значения функции F(n), где n – целое неотрицательное число, задан следующими соотношениями: F(0) = 0; F(n) = F(n – 1) + 1, если n нечётно; F(n) = F(n/2), если n > 0 и при этом n чётно. Укажите количество таких значений n < 1 000 000 000, для которых F(n) = 2. СтатГрад …
Читать далее
Е16.24 являющихся результатом вызова функции для значений n в диапазоне [40; 50]
Алгоритм вычисления функции F(n), где n – целое неотрицательное число, задан следующими соотношениями:
|
F(n) = n + 3, при n ≤ 3 F(n) = F(n – 2) + n, при n > 3 и четном значении F(n—1), F(n) = F(n – 2) + 2· n, при n > 3 и нечетном значении F(n—1) |
Определите сумму значений, являющихся результатом вызова функции для значений n в диапазоне [40; 50]. Ответ: Е. Джобс
Читать далее
Е16.23 F(n) = F(n – 1) – F(n – 2) + 3n, при n > 1 и n – четно
Алгоритм вычисления функции F(n), где n – целое неотрицательное число, задан следующими соотношениями:
|
F(0) = 1, F(1) = 3 F(n) = F(n – 1) – F(n – 2) + 3n, при n > 1 и n – четно F(n) = F(n – 2) – F(n – 3) + 2n, при n > 1 и n – нечетно |
Чему равно значение функции F(40)? В ответе запишите только целое число Ответ: Е. Джобс
Читать далее
Е16.22 Сколько существует таких чисел n, что 1 ≤ n ≤ 500 и F(n) = 8
Алгоритм вычисления значения функции F(n), где n – целое неотрицательное число, задан следующими соотношениями: F(0) = 0; F(n) = F(n/2), если n > 0 и при этом n чётно; F(n) = 1 + F(n – 1), если n нечётно. Сколько существует таких чисел n, что 1 ≤ n ≤ 500 и F(n) = 8? Ответ: …
Читать далее
Е16.21 F(n) = 1 при n ≤ 1; F(n) = n · F(n – 1) при чётных n > 1;
Алгоритм вычисления функции F(n) задан следующими соотношениями: F(n) = 1 при n ≤ 1; F(n) = n · F(n – 1) при чётных n > 1; F(n) = n + F(n – 2) при нечётных n > 1; Определите значение F(84). Ответ: Тренировочный вариант от 16.11.2020 «Евгений Джобс»
Читать далее
Е16.20 для которых сумма цифр значения F(n) равна 27.
Алгоритм вычисления функции F(n) задан следующими соотношениями: F(n) = n · n + 5 · n + 4, при n > 30 F(n) = F(n+1) + 3 · F(n+4), при чётных n ≤ 30 F(n) = 2 · F(n+2) + F(n+5), при нечётных n ≤ 30 Определите количество натуральных значений n из отрезка [1; 1000], …
Читать далее
Е16.19 F(0) = 0; F(n) = n + F(n – 3), если n > 0 и при этом n mod 3 = 0;
F(0) = 0; F(n) = n + F(n – 3), если n > 0 и при этом n mod 3 = 0; F(n) = n + F(n – (n mod 3)), если n mod 3 > 0. Чему равно значение функции F(25)? Обозначим через a mod b остаток от деления натурального числа a на натуральное …
Читать далее
16-е задание: «Вычисление рекуррентных выражений»
Уровень сложности
— повышенный,
Требуется использование специализированного программного обеспечения
— нет,
Максимальный балл
— 1,
Примерное время выполнения
— 9 минут.
Проверяемые элементы содержания: Вычисление рекуррентных выражений
До ЕГЭ 2021 года — это было задание № 11 ЕГЭ
Плейлист видеоразборов задания на YouTube:
Задание демонстрационного варианта 2022 года ФИПИ
Содержание:
- Решение по рекуррентной формуле
- Что вернет функция. Сколько символов «звездочка». Какова сумма чисел
- С каким аргументом?
- Не актуально для компьютерного ЕГЭ!
Решение по рекуррентной формуле
16_13:
Алгоритм вычисления значений функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями:
F(1) = 1; G(1) = 1; F(n) = F(n–1) + 3·G(n–1), при n >=2 G(n) = F(n–1) - 2·G(n–1), при n >=2
Чему равна сумма цифр значения F(18)?
Ответ: 46
Показать решение:
✎ Решение с использованием программирования:
PascalABC.NET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
function F(n: integer): integer; forward; function G(n: integer): integer; forward; function F(n: integer): integer; begin if n = 1 then F := 1 // или result := 1 else if n >= 2 then F := F(n - 1) + 3 * G(n - 1) // или result := F(n - 1) + 3 * G(n - 1) end; function G(n: integer): integer; begin if n = 1 then G := 1 // или result := 1 else if n >= 2 then G := F(n - 1) - 2 * G(n - 1) // или result := F(n - 1) - 2 * G(n - 1) end; begin var res := F(18); var s := 0; while res > 0 do begin s := s + (res mod 10); res := res div 10; end; print(s) end. |
Питон:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def F( n ): if n == 1: return 1 elif (n >= 2): return F(n-1)+3*G(n-1) def G( n ): if n == 1: return 1 elif (n >= 2): return F(n-1)-2*G(n-1) res = F(18) s = 0 while res > 0: s += res%10 res = res // 10 print(s) |
C++:
16_1:
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(1) = 1 F(n) = F(n–1) * (n + 2), при n > 1
Ответ: 840
✍ Показать решение:
✎ Решение с использованием программирования:
PascalABC.NET (решение №1):
1 2 3 4 5 6 7 8 9 10 11 |
function F(n: integer): integer; begin if n = 1 then F := 1 else if n > 1 then F := F(n - 1) * (n + 2) end; begin print(F(5)) end. |
PascalABC.NET (решение №2):
1 2 3 4 5 6 7 |
function F(n:integer):integer:= n=1 ? 1 : F(n-1) * (n+2); begin print(F(5)) end. |
Питон:
1 2 3 4 5 6 |
def F( n ): if n == 1: return 1 elif (n > 1): return F(n-1)*(n+2) print (F(5)) |
C++:
✎ Решение теоретическое (методом с конца к началу):
- Из условия задания мы имеем рекуррентную формулу: F(n–1) * (n + 2) и условие остановки рекурсии: n > 1.
- Поскольку рекуррентная формула уже задана, то остается подставить в нее начальный параметр — число 5:
F(5) = F(4) * 7
F(5) = F(4) * 7
F(4) = F(3) * 6
F(3) = F(2) * 5
F(2) = F(1) * 4
1
1 * 4 * 5 * 6 * 7 = 840
16_2:
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(0) = 1, F(1) = 1 F(n) = 2 * F(n–1) + F(n-2), при n > 1
Чему равно значение функции F(6)? В ответе запишите только целое число.
Ответ: 99
✍ Показать решение:
✎ Решение с использованием программирования:
PascalABC.NET (решение №2):
1 2 3 4 5 6 7 8 |
function F(n:integer):integer; begin if (n = 0) or (n = 1) then result:=1 else if n>1 then result:=2*F(n-1) + F(n-2); end; begin print(F(6)) end. |
✎ Решение 1. Теоретическое (метод решения с начала к концу):
- Из условия задания мы имеем рекуррентную формулу: 2 * F(n–1) + F(n-2) и условие остановки рекурсии: n > 1.
- Из заданной рекуррентной формулы видим, что функция зависит от предыдущей функции (F(n–1)) и от пред-предыдущей функции (F(n-2)).
- Так как первые два значения заданы (F(0) = 1, F(1) = 1), то можно построить таблицу последующих значений, двигаясь к числу 6:
- Таким образом, получаем, что при вызове функции F(6) результатом будет число 99
| n | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| F(n) 2*F(n – 1)+F(n — 2) |
1 | 1 | 2*1+1 =3 | 2*3+1 =7 | 2*7+3 =17 | 2*17+7 =41 | 2*41+17 =99 |
✎ Решение 2. Теоретическое (метод решения с конца к началу):
- Поскольку рекуррентная формула уже задана, то остается подставить в нее начальный параметр — число 6:
F(6) = 2*F(5) + F(4)
F(6) = 2*F(5) + F(4)
F(5) = 2*F(4) + F(3)
F(4) = 2*F(3) + F(2)
F(3) = 2*F(2) + F(1)
F(2) = 2*F(1) + F(0) = 2*1+1 = 3
1 1
F(6) = 2*F(5) + F(4) = 2*41 + 17 = 99 F(5) = 2*F(4) + F(3) + 2*17+7 = 41 ↑ F(4) = 2*F(3) + F(2) = 2*7+3 = 17 ↑ F(3) = 2*F(2) + F(1) = 2*3+1 = 7 ↑ F(2) = 2*F(1) + F(0) = 2*1+1 = 3 ↑ 1 1
📹 Видео (теоретическое)
Видеорешение на RuTube здесь
16_10:
Алгоритм вычисления значений функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями:
F(1) = 1; G(1) = 1; F(n) = F(n–1) – G(n–1), G(n) = F(n–1) + 2*G(n–1), при n >= 2
Чему равно значение величины F(5)/G(5)?
В ответе запишите только целое число.
Типовые задания для тренировки
Ответ: -2
Показать решение:
✎ Решение с использованием программирования:
PascalABC.NET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function F(n: integer): integer; forward; function G(n: integer): integer; forward; function F(n:integer):integer; begin if n = 1 then result:=1 else if n>=2 then result:=F(n-1) - G(n-1); end; function G(n:integer):integer; begin if n = 1 then result:=1 else if n>=2 then result:=F(n-1) + 2*G(n-1); end; begin print(F(5)/G(5)) end. |
✎ Решение теоретическое:
- Решим задание с вызова функций F(5) и G(5). Будем получать формулы последовательно для F(5), F(4), …, F(1), G(5), G(4), …, G(1). Дойдя до известных значений F(1) = 1 и G(1) = 1, подставим их в полученные формулы:
F(5) = F(4) – G(4)
G(5) = F(4) + 2*G(4)
F(4) = F(3) – G(3)
G(4) = F(3) + 2*G(3)
F(3) = F(2) – G(2)
G(3) = F(2) + 2*G(2)
F(2) = F(1) – G(1)
G(2) = F(1) + 2*G(1)
F(1) = 1; G(1) = 1;
F(2) = F(1) – G(1) = 1 - 1 = 0
G(2) = F(1) + 2*G(1) = 1 + 2 = 3
F(3) = F(2) – G(2) = 0 - 3 = -3
G(3) = F(2) + 2*G(2) = 0 + 6 = 6
F(4) = F(3) – G(3) = -3 - 6 = -9
G(4) = F(3) + 2*G(3) = -3 + 12 = 9
F(5) = F(4) – G(4) = -9 - 9 = -18
G(5) = F(4) + 2*G(4) = -9 + 18 = 9
F(5)/G(5) = -18/9 = -2
Что вернет функция. Сколько символов «звездочка». Какова сумма чисел
16_9:
Что вернет функция F, если ее вызвать с аргументом 6?
Паскаль:
1 2 3 4 5 6 7 |
function f(a:word):longword; begin if a>0 then f := f(a-1)*a; else f:=1; end; |
Бейсик:
FUNCTION F(a) IF a > 0 THEN F = F(a - 1) * a ELSE F = 1; END IF END FUNCTION |
Python:
def F(a): if a > 0: return F(a - 1) * a else: return 1 |
С++:
int F(int a); int F(int a) { if (a > 0) return F(a - 1) * a; else return 1; } |
Ответ: 720
Показать решение:
-
✎ Решение с использованием программирования:
- Если аргумент функции, т.е. a, равен единице, то функция возвращает в программу значение 1, иначе вызывается функция с аргументом a — 1 и результат этой функции умножается на a.
- Это рекурсивный алгоритм вычисления факториала числа. Чтобы удостовериться в этом, выполним трассировку функции с аргументом = 6:
Подобные задания потеряли смысл после введения компьютерного ЕГЭ. Решение очевидно и просто:
PascalABC.NET:
1 2 3 4 5 6 7 8 9 10 |
function f(a:word):longword; begin if a>0 then f := f(a-1)*a else f:=1; end; begin print(f(6)) end. |
✎ Решение теоретическое:
Рассмотрим алгоритм функции:
F(6): 6 > 0, то F(5)*6 F(5): 5 > 0, то F(4)*5 F(4): 4 > 0, то F(3)*4 F(3): 3 > 0, то F(2)*3 F(2): 2 > 0, то F(1)*2 F(1): 1 > 0, то F(0)*1 F(0): 0 > 0 - нет, то F(0) = 1 Теперь подставляем значения, двигаясь вверх по прописанному алгоритму: F(1)= F(0)*1 = 1*1 = 1 F(2)= F(1)*2 = 1*2 = 2 F(3)= F(2)*3 = 2*3 = 6 F(4)= F(3)*4 = 6*4 = 24 F(5)= F(4)*5 = 24*5 = 120 F(6)= F(5)*6 = 120*6 = 720
16_3:
Ниже записаны две рекурсивные функции (процедуры): F и G.
Сколько символов «звездочка» будет напечатано на экране при выполнении вызова F(18)?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure F(n: integer); forward; procedure G(n: integer); forward; procedure F(n: integer); begin write('*'); if n > 10 then F(n - 2) else G(n); end; procedure G(n: integer); begin write('**'); if n > 0 then F(n - 3); end; |
Бейсик:
DECLARE SUB F(n) DECLARE SUB G(n) SUB F(n) PRINT "*" IF n > 10 THEN F(n - 2) ELSE G(n) END IF END SUB SUB G(n) PRINT "**" IF n > 0 THEN F(n - 3) END IF END SUB |
Python:
def F(n): print("*") if n > 10: F(n - 2) else: G(n) def G(n): print("**") if n > 0: F(n - 3) |
С++:
void F(int n) { std::cout << "*"; if (n > 10) { F(n - 2); } else { G(n); } } void G(int n) { std::cout << "**"; if (n > 0) F(n - 3); } |
Типовые задания для тренировки
Ответ: 19
✍ Показать решение:
-
✎ Решение с использованием программирования:
- Для удобства восприятия задания, выпишем рекуррентные формулы и условия остановки рекурсии для двух процедур:
Подобные задания потеряли смысл после введения компьютерного ЕГЭ. Однако, при большом количестве звездочек имеет смысл ввести счетчик для хранения кол-ва звезд:
PascalABC.NET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
procedure F(n: integer); forward; procedure G(n: integer); forward; var k:=0; // объявление глобальной переменной-счетчика procedure F(n: integer); begin write('*'); k+=1; // увеличение счетчика if n > 10 then F(n - 2) else G(n); end; procedure G(n: integer); begin write('**'); k+=2;// увеличение счетчика if n > 0 then F(n - 3); end; begin f(18); print(k) // вывод счетчика end. |
✎ Решение теоретическое:
Для F: * F(n - 2) при n > 10 G(n) при n <= 10 Для G: ** F(n - 3) при n > 0
✎ Способ 1:
F(18) -> F(16) -> F(14) -> F(12) -> F(10) -> G(10) -> F(7) -> G(7) -> F(4) -> G(4) -> F(1) -> G(1) -> F(-2) -> G(-2)
Результат: 19
✎ Способ 2:
1 шаг: F(18)
* F(16)
2 шаг: * F(14)
3 шаг: * F(12)
4 шаг: * F(10)
5 шаг: * G(10)
6 шаг: ** F(7)
7 шаг: * G(7)
8 шаг: ** F(4)
9 шаг: * G(4)
10 шаг: ** F(1)
11 шаг: * G(1)
12 шаг: ** F(-2)
13 шаг: * G(-2)
14 шаг: **
📹 Видео (аналитическое решение)
Видеорешение на RuTube здесь
16_12:
Сколько символов «звездочка» будет напечатано на экране при выполнении вызова F(5)?
Паскаль:
1 2 3 4 5 6 7 8 9 |
procedure F(n: integer); begin writeln('*'); if n > 0 then begin F(n-2); F(n div 2); F(n div 2); end end; |
Бейсик:
DECLARE SUB F(n) SUB F(n) PRINT '*' IF n > 0 THEN F(n - 2) F(n 2) F(n 2) END IF END SUB |
Python:
def F(n): print('*') if n > 0: F(n-2) F(n // 2) F(n // 2) |
С++:
void F(int n) { std::cout << ″*″; if (n > 0) { F(n - 2); F(n / 2); F(n / 2); } } |
Ответ: 34
Показать решение:
- В начале каждого вызова независимо от условия на экран выводится «звездочка». Кроме того, если условие n > 0 истинно, то функция вызывается еще три раза с разными аргументами. Таким образом, каждая функция выводит на экран либо одну звездочку (если условие ложно), либо 4 звездочки если условие истинно.
- Схематично рассмотрим вызов каждой функции, начиная с функции F(5). Дойдя до F(0), для которой условие будет ложно, будем подставлять полученное количество «звездочек», двигаясь опять к F(5):
F(5) = одна '*', F(3), F(2), F(2)
F(3) = одна '*', F(1), F(1), F(1)
F(2) = одна '*', F(0), F(1), F(1)
F(1) = одна '*', F(-1), F(0), F(0)
F(0) = одна '*' = 1 (условие ложно)
F(-1) = одна '*' = 1 (условие ложно)
---
Движение обратно:
F(1) = одна '*', F(-1), F(0), F(0) = 1 + 1 + 1 + 1 = 4 '*'
F(2) = одна '*', F(0), F(1), F(1) = 1 + 1 + 4 + 4 = 10 '*'
F(3) = одна '*', F(1), F(1), F(1) = 1 + 4 + 4 + 4 = 13 '*'
F(5) = одна '*', F(3), F(2), F(2) = 1 + 13 + 10 + 10 = 34 '*'
16_4:
Ниже записаны две рекурсивные функции (процедуры): F и G.
Какова сумма чисел, напечатанных на экране при выполнении вызова F(17)?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
procedure F(n: integer); forward; procedure G(n: integer); forward; procedure F(n: integer); begin writeln(n); if n mod 2 =0 then F(n div 2) else G((n - 1) div 2); end; procedure G(n: integer); begin writeln (n); if n > 0 then F(n); end; |
Бейсик:
DECLARE SUB F(n) DECLARE SUB G(n) SUB F(n) PRINT n IF n MOD 2 = 0 THEN F(n 2) ELSE G ( (n - 1) 2) END IF END SUB SUB G(n) PRINT n IF n > 0 THEN F(n) END IF END SUB |
Python:
def F(n): print(n) if n % 2 == 0: F(n // 2) else: G((n - 1) // 2) def G(n): print(n) if n > 0: F(n) |
С++:
void F(int n) { std::cout << n << endl; if (n % 2 == 0) { F(n / 2); } else { G((n - 1) / 2) ; } } void G(int n) { std::cout << n << endl; if (n > 0) F(n); } |
Типовые задания для тренировки
Ответ: 40
Показать решение:
-
✎ Решение с использованием программирования:
- Для удобства восприятия задания, выпишем рекуррентные формулы и условия остановки рекурсии для двух процедур:
Подобные задания потеряли смысл после введения компьютерного ЕГЭ. Однако, при большом количестве чисел имеет смысл ввести сумматор для вычисления суммы данных чисел:
PascalABC.NET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
procedure F(n: integer); forward; procedure G(n: integer); forward; var sum:=0; // сумматор procedure F(n: integer); begin writeln(n); sum+=n; // добавляем число в сумматор if n mod 2 =0 then F(n div 2) else G((n - 1) div 2); end; procedure G(n: integer); begin writeln (n); sum+=n; // добавляем число в сумматор if n > 0 then F(n); end; begin F(17); print('sum =',sum) end. |
✎ Решение теоретическое:
Для F: n F(n div 2) при n - четное (n mod 2 = 0) G((n - 1) div 2) при n - нечетное Для G: n F(n) при n > 0
F(17) -> n - нечетное, G(8) вывод 17 G(8) -> F(8) вывод 8 F(8) -> n - четное, F(4) вывод 8 F(4) -> n - четное, F(2) вывод 4 F(2) -> n - четное, F(1) вывод 2 F(1) -> n - нечетное, G(0) вывод 1 G(0) вывод 0
17 + 8 + 8 + 4 + 2 + 1 + 0 = 40
16_5:
Ниже записаны две рекурсивные функции (процедуры): F и G.
Чему будет равно значение, вычисленное при выполнении вызова F(6)?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function F(n: integer):integer; forward; function G(n: integer):integer; forward; function F(n:integer):integer; begin if (n > 2) then F:= F(n - 1) + G(n - 2) else F:= n; end; function G(n:integer):integer; begin if (n > 2)then G:= G(n - 1) + F(n -2) else G:= n+1; end; |
Бейсик:
FUNCTION F(n) IF n > 2 THEN F = F(n - 1) + G(n - 2) ELSE F = n; END IF END FUNCTION FUNCTION G(n) IF n > 2 THEN G = G(n - 1) + F(n -2) ELSE G = n+1; END IF END FUNCTION |
Python:
def F(n): if n > 2: return F(n - 1) + G(n - 2) else: return n def G(n): if n > 2: return G(n - 1) + F(n - 2) else: return n+1 |
С++:
int F(int n); int G(int n); int F(int n) { if (n > 2) return F(n - 1) + G(n - 2); else return n; } int G(int n) { if (n > 2) return G(n - 1) + F(n - 2); else return n + 1; } |
Типовые задания для тренировки
Ответ: 17
✍ Показать решение:
-
Результат: 17
📹 Видео (аналитическое решение)
Видеорешение на RuTube здесь
С каким аргументом?
16_8:
Вызов представленной ниже рекурсивной функции приводит к появлению на экране чисел и точек. С каким минимальным натуральным аргументом а нужно вызвать эту функцию, чтобы в результате на экране появилось 5 точек (не обязательно подряд, между точками могут встречаться числа)?
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function gz(a:integer):integer; var p:integer; begin if a<1 then begin gz:=1; exit; end; if a mod 3=0 then begin write('...'); p:=gz(a div 3)+gz(a div 4); end else begin write('.'); p:=gz(a div 4); end; write(p); gz:=2; end; |
Ответ: 6
✍ Показать решение:
-
✎ Решение с использованием программирования:
Подобные задания потеряли смысл после введения компьютерного ЕГЭ. Однако, при большом количестве чисел имеет смысл ввести сумматор для вычисления суммы данных чисел:
PascalABC.NET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
procedure F(n: integer); forward; procedure G(n: integer); forward; var sum:=0; // сумматор procedure F(n: integer); begin writeln(n); sum+=n; // добавляем число в сумматор if n mod 2 =0 then F(n div 2) else G((n - 1) div 2); end; procedure G(n: integer); begin writeln (n); sum+=n; // добавляем число в сумматор if n > 0 then F(n); end; begin F(17); print('sum =',sum) end. |
Результат: 6
📹 Видео (аналитическое)
📹 Видеорешение на RuTube здесь (аналитическое)
Не актуально для компьютерного ЕГЭ!
Все числа, которые будут напечатаны на экране, в том же порядке
Демоверсия ЕГЭ 2018 информатика:
Ниже на пяти языках программирования записан рекурсивный алгоритм F.
Паскаль:
1 2 3 4 5 6 7 8 9 |
procedure F(n: integer); begin if n > 0 then begin write(n); F(n - 3); F(n div 3) end end; |
Бейсик:
SUB F(n) IF n > 0 THEN PRINT n F(n - 3) F(n 3) END IF END SUB |
Python:
def F(n): if n > 0: print(n) F(n - 3) F(n // 3) |
С++:
void F(int n){ if (n > 0){ std::cout <<n; F(n - 3); F(n / 3); } } |
Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(9). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
Похожие задания для тренировки
Ответ: 9631231
✍ Показать решение:
-
Рассмотрим алгоритм:
- В данном фрагменте программы рекурсивная процедура вызывает саму себя дважды.
- Благодаря условию, находящемуся в процедуре (if n > 0 — условие остановки рекурсии), обеспечивается выход из рекурсии и не происходит «зацикливания».
- Выполнение процедур закончится, когда в каждой из вызванных процедур выполнятся по две внутренние процедуры, и условие if n > 0 перестанет работать (т.е. когда параметр процедуры n станет <= 0).
- div — целочисленное деление, т.е., например:
5 div 2 = 2 1 div 2 = 0
F(9) 1: 9 F(6) (9 - 3 = 6) 2: 6 F(3) (6 - 3 = 3) 3: 3 F(0) (3 - 3 = 0, условие не работает) 4: F(1) (3 div 3 = 1) 5: 1 F(-2) (1 - 3 = -2, условие не работает) 6: F(0) (1 div 3 = 0, условие не работает) 7: F(2) (6 div 3 = 2) 8: 2 F(-1) (2 - 3 = -1, условие не работает) 9: F(0) (2 div 3 = 0, условие не работает) 10:F(3) (9 div 3 = 3) 11:3 F(0) (3 - 3 = 0, условие не работает) 12:F(1) (3 div 3 = 1) 13: 1 F(-2) (1 - 3 = -2, условие не работает)
📹 Видео 1 способ
📹 Видеорешение на RuTube здесь
📹 Видео 2 способ
📹 Видеорешение на RuTube здесь
16_7:
Ниже записан рекурсивный алгоритм F. Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(130).
Числа должны быть записаны в том же порядке, в котором они выводятся на экран.
Паскаль:
1 2 3 4 5 6 7 8 9 |
procedure F(n: integer); begin if n > 1 then begin write(n); F(n div 10); F(n - 40) end end; |
Бейсик:
SUB F(n) IF n > 1 THEN PRINT n F(n 10) F(n - 40) END IF END SUB |
Python:
def F(n): if n > 1: print(n) F(n // 10) F(n - 40) |
С++:
void F(int n){ if (n > 1){ std::cout <<n; F(n / 10); F(n - 40); } } |
Ответ: 1301390950510
✍ Показать решение:
-
Разберем алгоритм программы:
- В данном фрагменте программы рекурсивная процедура F вызывает саму себя дважды.
- В процедуре находится условие if n > 1 — условие остановки рекурсии, благодаря которому обеспечивается выход из рекурсии и не происходит «зацикливания».
- Выполнение фрагмента программы закончится, когда в каждой из вызванных процедур выполнятся по две внутренние процедуры, и условие if n > 1 перестанет работать (т.е. когда параметр процедуры n станет <= 1).
- div — целочисленное деление, т.е., например:
5 div 3 = 1 1 div 3 = 0
F(130) 130 1: ➥ F(13) (130 div 10 = 13) 13 2: ➥ F(1) условие не работает! 1 ≤ 0 3: ➥ F(-27) условие не работает! -27 ≤ 0 4: ➥ F(90) (130 - 40 = 90) 90 5: ➥ F(9) (90 div 10 = 9) 9 6: ➥ F(0) условие не работает! 0 ≤ 0 7: ➥ F(-31) условие не работает! -31 ≤ 0 8: ➥ F(50) (90 - 40 = 50) 50 9: ➥ F(5) (50 div 10 = 5) 5 10: ➥ F(0) условие не работает! 0 ≤ 0 11: ➥ F(-35) условие не работает! -35 ≤ 0 12: ➥ F(10) (50 - 40 = 10) 10 13: ➥ F(1) условие не работает! 1 ≤ 0 14: ➥ F(-30) условие не работает! -30 ≤ 0
Результат: 1301390950510
📹 Видео
📹 Видеорешение на RuTube здесь
16_11:
Определите, что выведет на экран программа при вызове F(5).
Паскаль:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
procedure F(n: integer); forward; procedure G(n: integer); forward; procedure F(n: integer); begin if n > 2 then begin write(n); F(n - 1); G(n - 2); end else write(n+2); end; procedure G(n: integer); begin write(n); if n > 2 then begin G(n - 1); F(n - 2); end; end; |
Бейсик:
DECLARE SUB F(n) DECLARE SUB G(n) SUB F(n) IF n > 2 THEN PRINT n F(n - 1) G(n - 2) ELSE PRINT n+2 END IF END SUB SUB G(n) PRINT n IF n > 2 THEN G(n - 1) F(n - 2) END IF END SUB |
Python:
def F(n): if n > 2: print(n, end='') F(n - 1) G(n - 2) else: print(n+2, end='') def G(n): print(n, end='') if n > 2: G(n - 1) F(n - 2) |
С++:
void G(int n); void F(int n) { if (n > 2) { std::cout << n; F(n - 1); G(n - 2); } else std::cout << n+2; } void G(int n) { std::cout << n; if (n > 2) { G(n - 1); F(n - 2); } } |
Типовые задания для тренировки
Ответ: 543412323
Показать решение:
- При истинности условия функция F также, как и функция G «запускает» еще две функции: функция F: 1)F(n — 1) и 2)G(n — 2), а функция G: 1)G(n — 1) и 2)F(n — 2).
- Рассмотрим последовательно алгоритм работы функций, нумеруя вызовы функций. Для удобства будем делать отступы для каждой функции. Таким образом, для вызова каждой функции должно быть два внутренних вызова:
F(5) = 5 (на экране) 1) F(n - 1), т.е. F(4) F(4) = 4(на экране) 1) F(n - 1), т.е. F(3) F(3) = 3(на экране) 1) F(n - 1), т.е. F(2) F(2) = n + 2 = 4 (на экране) (блок else) 2) G(n - 2), т.е. G(1) G(1) = 1 (на экране) 2) G(n - 2), т.е. G(2) G(2) = 2 (на экране) 2) G(n - 2), т.е. G(3) G(3) = 3 (на экране) 1)G(n - 1), т.е. G(2) G(2) = 2 (на экране) 2) F(n - 2), т.е. F(1) F(1) = n + 2 = 3 (на экране) (блок else)
543412323






















