Решу егэ информатика 15618

Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (yz) ∨ ¬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) ∨ (yz) ∨ ¬w и получим систему, при которой оно ложно:

 система выражений совокупность выражений x=0,y=1, конец системы . y не равно z,w=1. конец совокупности .

Cразу видно, что первый столбец это w, поскольку w всегда должна равняться единице. Также, ясно, что x это переменная 4, так как y не равно z. Из первого выражения x ∧ ¬y и последней строчке таблицы видно, что переменная 3 это y, а вторая переменная это z.

Примечание.

Рассмотрим, как будет выглядеть полная таблица истинности. Переменная w всегда должна принимать значение 1, поэтому в первом столбце во всех строках будет стоять единица. Исходя из условия y не равно z можно заключить, что во втором столбце в последней строке будет стоять единица, и в первых двух строках третьего столбца тоже будут стоять единицы. В первой четвёртого столбца должна стоять единица, поскольку строки в таблице истинности должны быть разными.

Перем. 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 (Истина).

ЕГЭ по информатике - задание 2 (Логические функции и переменные)

С логическими переменными можно производить логические операции. При решении второго задания из ЕГЭ по информатике необходимо твёрдо знать каждую логическую операцию, и давайте рассмотрим их.

ЕГЭ по информатике - задание 2 (Логическое отрицание)

ЕГЭ по информатике - задание 2 (Логическое сложение)

ЕГЭ по информатике - задание 2 (Логическое умножение)

ЕГЭ по информатике - задание 2 (Логическое следование)

ЕГЭ по информатике - задание 2 (логическая равносильность)

ЕГЭ по информатике - задание 2 ( 2 задание сложение по модулю 2)

  1. () — операции в скобках
  2. ¬ — логическое отрицание
  3. ∧ — логическое умножение
  4. ∨ — логическое сложение
  5. ⟶ — следование
  6. ≡ — равнозначность

ЕГЭ по информатике - задание 2 ( интересные формулы)

Ещё соотношения:

Передём к решению задач из ЕГЭ по информатике

Логическая функция F задаётся выражением z ∧ ¬y ∧ (w → x). Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.

ЕГЭ по информатике - задание 2 (лёгкая задача)
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
ЕГЭ по информатике - задание 2 (лёгкая задача) пример
Тогда первому столбцу соответствует переменная 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.

ЕГЭ по информатике - задание 2 (задача)

В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

ЕГЭ по информатике - задание 2 (лёгкая задача) пример

Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:

Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.

Определяем главную логическую операцию («главную скрипку»), которая соединяет разные выражения. Видим, что это логическое сложение.

Во всех строчках таблицы функция принимает значение 0 (ноль). Значит, и каждое выражение должно принимать значение 0 (ноль).

ЕГЭ по информатике - задание 2 (задача схема) пример

Самым слабым звеном является переменная w, потому что она стоит одна. Переменная w должна равняться всегда 0(нулю) — этому условию может удовлетворить только третий столбец. Значит w стоит на третьем месте.

Следующим слабым звеном является равносильность. Она должна «выдавать» 0 (ноль). Равносильность «выдаёт» 0 (ноль), когда переменные разные!

Проанализируем первый и второй столбец. В третьей строчке, и там, и там, стоит 1 (единица). Значит, первый и второй столбец не могут быть одновременно y и z (или z и y).

Рассмотрим второй и четвёртый столбец. Вторая строчка содержит одинаковое значение 0 (ноль), и там, и там. Значит, второй и четвёртый столбец не могут быть одновременно y и z (или z и y).

Таким образом, y и z (или z и y) будут столбцы первый и четвёртый! И теперь можно расставить недостающие значения в этих столбцах. Расставляем, чтобы были разные значения, а второй столбец получается x.

ЕГЭ по информатике - задание 2 (решение) пример

Осталось разобраться с 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.

ЕГЭ по информатике - задание 2 мощнейший метод
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
ЕГЭ по информатике - задание 2 (лёгкая задача) пример
Тогда первому столбцу соответствует переменная 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 задаётся выражением (xz ) ∨ (x → (y ∧ z)).

Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.

Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z.

. . . F

В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

Пример. Пусть задано выражение xy, зависящее от двух переменных x и y, и фрагмент таблицы истинности:

Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.

Данная импликация принимает значение 0 тогда и только тогда, когда

Пусть . Исходя из системы (*), , тогда . В первой строке нет единицы, значит, переменная x находится в третьем столбце. Тогда первая строка имеет вид 0 0 1.

Вторая строка должна отличаться от первой, поэтому она имеет вид 1 0 1. Рассмотрим два варианта:

Второй вариант не удовлетворяет системе (*), а первый удовлетворяет.

Приведем другое решение.

Составим таблицу истинности для выражения (xz ) ∨ (x → (y ∧ z)) и выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z. Получим следующие наборы:

Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.

Первая строка таблицы может соответствовать только набору (1, 0, 0), следовательно, третий столбец — это переменная x. Вторая строка соответствует набору (1, 1, 0), в котором единичное значение принимает также переменная y, следовательно, первый столбец — это переменная у, тогда второй столбец — это переменная z.

Тип 2 № 15124

Логическая функция F задаётся выражением (xy ) ∨ ((y ∨ z) → x).

Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F.

Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z.

. . . F

В ответе напишите буквы x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

Пример. Пусть задано выражение xy, зависящее от двух переменных x и y, и фрагмент таблицы истинности:

Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.

Данная импликация принимает значение 0 тогда и только тогда, когда

Пусть . Исходя из системы (*), , тогда . В первой строке нет нуля, значит, переменная x находится в первом столбце. Тогда первая строка имеет вид 0 1 1.

Вторая строка должна отличаться от первой, поэтому она имеет вид 0 0 1. Рассмотрим два варианта:

Первый вариант не удовлетворяет системе (*), а второй удовлетворяет.

Приведем другое решение.

Составим таблицу истинности для выражения (xy ) ∨ ((y ∨ z) → x) и выпишем те наборы переменных, при которых данное выражение равно 0. В наборах переменные запишем в порядке х, y, z. Получим следующие наборы: (0, 1, 0), (0, 1, 1).

Сопоставим эти наборы с приведенным в задании фрагментом таблицы истинности.

В обоих наборах переменная x принимает значение 0, значит, ей может соответствовать только первый столбец таблицы. Переменная z принимает значение 1 только в одном наборе, значит, ей может соответствовать только второй столбец таблицы, тогда третий столбец соответствует переменной у.

Тип 2 № 15618

Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (yz) ∨ ¬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) ∨ (yz) ∨ ¬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 лет назад

Канал видеоролика: Задачи по математике, информатике

Задание 15 Информатика решуЕГЭ Rec  22 12 13

Смотреть видео:

#информатика #егэинформатика #икт #экзамены #егэ_2020 #мгту #школьникам #помощь_студентам #подготовкакэкзаменам

Свежая информация для ЕГЭ и ОГЭ по Информатике (листай):

С этим видео ученики смотрят следующие ролики:

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

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

Готовые задания

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

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

Готовые задания

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

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

Готовые задания

Егэ информатика 2017. Задание 5.

Егэ информатика 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(n1),

F(n) = F(n 2) + 2· n, при n > 3 и нечетном значении F(n1)

Определите сумму значений, являющихся результатом вызова функции для значений 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(1) (при котором «сработает» остановка рекурсии). Получим:
  • F(5) = F(4) * 7
           F(4) = F(3) * 6
                  F(3) = F(2) * 5
                         F(2) = F(1) * 4
                                  1
    
  • На F(2) необходимо остановиться, так как действует условие остановки рекурсии: формула работает для n > 1. Также учтем, что по условию F(1) = 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:
  • 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
  • Таким образом, получаем, что при вызове функции F(6) результатом будет число 99

✎ Решение 2. Теоретическое (метод решения с конца к началу):

  • Поскольку рекуррентная формула уже задана, то остается подставить в нее начальный параметр — число 6:
  • F(6) = 2*F(5) + F(4)
    
  • Теперь применим эту формулу для всех вызываемых вложенных функций, вплоть до F(2) (F(1) и F(0) известны из условия задачи). Получим:
  • 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

Показать решение:

    ✎ Решение с использованием программирования:
    Подобные задания потеряли смысл после введения компьютерного ЕГЭ. Решение очевидно и просто:
    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.

    ✎ Решение теоретическое:
    Рассмотрим алгоритм функции:

  • Если аргумент функции, т.е. a, равен единице, то функция возвращает в программу значение 1, иначе вызывается функция с аргументом a — 1 и результат этой функции умножается на a.
  • Это рекурсивный алгоритм вычисления факториала числа. Чтобы удостовериться в этом, выполним трассировку функции с аргументом = 6:
  • 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
    
  • Т.е. 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(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)
    
  • Обратим внимание, что независимо от условия процедура F выводит на экран одну *, а процедура G выводит две *. Посчитаем для последовательности вызовов итоговую сумму звездочек: 9F + 5G = 9*1 + 5*2 = 19
  • Результат: 19

    ✎ Способ 2:

  • Рассмотрим пошагово выполнение программы при вызове F(18):
  • 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 шаг:                                                             **
    
  • Посчитаем количество звездочек: 19

📹 Видео (аналитическое решение)

Видеорешение на 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).
  • Обратим внимание, что независимо от условия как процедура F выводит на экран n, так и процедура G выводит n.
  • 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, условие не работает) 
    
  • Выделены те числа, которые выводятся на экран. Подчеркнуты те процедуры, в которых условие не работает, соответственно, ничего на экран не выводится.
  • Перепишем по порядку все выводимые на экран числа сверху вниз: 9631231

📹 Видео 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

Результат: 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


Понравилась статья? Поделить с друзьями:

Новое и интересное на сайте:

  • Решу егэ информатика 15124
  • Решу егэ информатика 18071
  • Решу егэ информатика 15097
  • Решу егэ информатика 1802
  • Решу егэ информатика 15 задание как решать

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: