Егэ информатика задание 25833

На рисунке слева изображена схема дорог N-ского района. В таблице звёздочкой обозначено наличие дороги из одного населённого пункта в другой. Отсутствие звёздочки означает, что такой дороги нет.

П1 П2 П3 П4 П5 П6 П7
П1 * * * *
П2 * *
П3 * * *
П4 * * *
П5 * * *
П6 * * *
П7 * *

Каждому населённому пункту на схеме соответствует его номер в таблице, но неизвестно, какой именно номер. Определите, какие номера населённых пунктов в таблице могут соответствовать населённым пунктам E и F на схеме. В ответе запишите эти два номера в возрастающем порядке без пробелов и знаков препинания.

Задание 1 № 25833

На рисунке слева изображена схема дорог N-ского района. В таблице звёздочкой обозначено наличие дороги из одного населённого пункта в другой. Отсутствие звёздочки означает, что такой дороги нет.

Каждому населённому пункту на схеме соответствует его номер в таблице, но неизвестно, какой именно номер. Определите, какие номера населённых пунктов в таблице могут соответствовать населённым пунктам E и F на схеме. В ответе запишите эти два номера в возрастающем порядке без пробелов и знаков препинания.

2. Задание 2 № 17320

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

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

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

Переменная 1 Переменная 2 Переменная 3 Переменная 4 Функция
??? ??? ??? ??? F
0 1 1 1 1
0 1 0   1
0 1 0   1

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

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

Переменная 1 Переменная 1 Функция
??? ??? F
0 1 0

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

3. Задание 3 № 37507

В файле приведён фрагмент базы данных «Продукты» о поставках товаров в магазины районов города. База данных состоит из трёх таблиц.

3.xlsx

Таблица «Движение товаров» содержит записи о поставках товаров в магазины в течение первой декады июня 2021 г., а также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок, шт. занесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Заголовок таблицы имеет следующий вид.

ID операции Дата ID магазина Артикул Тип операции Количество упаковок,
шт.
Цена,
руб./шт.

Таблица «Товар» содержит информацию об основных характеристиках каждого товара. Заголовок таблицы имеет следующий вид.

Артикул Отдел Наименование Ед. изм. Количество
в упаковке
Поставщик

Таблица «Магазин» содержит информацию о местонахождении магазинов. Заголовок таблицы имеет следующий вид.

На рисунке приведена схема указанной базы данных.

Используя информацию из приведённой базы данных, определите, сколько рублей выручили магазины Октябрьского района от продажи риса (всех видов) за период с 1 по 10 июня включительно.

В ответе запишите только число.

4. Задание 4 № 1109

Для кодирования букв Р, И, К, П, А решили использовать двоичное представление чисел 0, 1, 2, 3 и 4 соответственно (с сохранением одного незначащего нуля в случае одноразрядного представления). Закодируйте последовательность букв ПАПРИКА таким способом и результат запишите шестнадцатеричным кодом.

5. Задание 5 № 3417

Исполнитель Робот действует на клетчатой доске, между соседними клетками которой могут стоять стены. Робот передвигается по клеткам доски и может выполнять команды 1 (вверх), 2 (вниз), 3 (вправо) и 4 (влево), переходя на соседнюю клетку в направлении, указанном в скобках. Если в этом направлении между клетками стоит стена, то Робот разрушается. Робот успешно выполнил программу

33233241

Какую последовательность из четырех команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?

6. Задание 6 № 33751

Определите, при каком наименьшем введённом значении переменной s программа выведет число 66. Для Вашего удобства программа представлена на четырёх языках программирования.

Python Си++

s = int(input())

s = (s + 1) // 7

n = 36

while s < 2050:

    s = s * 2

    n = n + 3

print(n)

#include <iostream>

using namespace std;

int main()

{

    int s;

    cin >> s;

    s = (s + 1) / 7;

    int n = 36;

    while (s < 2050) {

        s = s * 2;

        n = n + 3;

    }

    cout << n << endl;

    return 0;

}

Паскаль Алгоритмический язык

var s, n: integer;

begin

    readln(s);

    s := (s + 1) div 7;

    n := 36;

    while s < 2050 do

    begin

        s := s * 2;

        n := n + 3

    end;

    writeln(n)

end.

алг

нач

    цел n, s

    ввод s

    s := div(s + 1, 7)

    n := 36

    нц пока s < 2050

        s := s * 2

        n := n + 3

    кц

    вывод n

кон

7. Задание 7 № 2425

У Толи есть доступ к сети Интернет по высокоскоростному одностороннему радиоканалу, обеспечивающему скорость получения информации 218 бит в секунду. У Миши нет скоростного доступа в Интернет, но есть возможность получать информацию от Толи по низкоскоростному телефонному каналу со средней скоростью 215 бит в секунду. Миша договорился с Толей, что тот будет скачивать для него данные объемом 11 Мбайт по высокоскоростному каналу и ретранслировать их Мише по низкоскоростному каналу. Компьютер Толи может начать ретрансляцию данных не раньше, чем им будут получены первые 512 Кбайт этих данных. Каков минимально возможный промежуток времени (в секундах) с момента начала скачивания Толей данных до полного их получения Мишей? В ответе укажите только число, слово «секунд» или букву «с» добавлять не нужно.

8. Задание 8 № 17328

Герасим составляет 7-буквенные коды из букв Г, Е, Р, А, С, И, М. Каждую букву нужно использовать ровно 1 раз, при этом нельзя ставить подряд две гласные или две согласные. Сколько различных кодов может составить Герасим?

9. Задание 9 № 28117

Откройте файл электронной таблицы, содержащей вещественные числа — результаты ежечасного измерения температуры воздуха на протяжении трёх месяцев.

Задание 9

Найдите количество суток, в которых среднее значение температуры не превышало 20 °С.

10. Задание 10 № 27577

С помощью текстового редактора определите, сколько раз, не считая сносок, встречается слово «ты» или «Ты» в тексте романа в стихах А. С. Пушкина «Евгений Онегин». Другие формы слова «ты», такие как «твой» и т. д., учитывать не следует. В ответе укажите только число.

Задание 10

11. Задание 11 № 10316

При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 20 символов и содержащий только символы из 8-символьного набора: А, В, C, D, Е, F, G, H. В базе данных для хранения сведений о каждом пользователе отведено одинаковое минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым минимально возможным количеством бит. Кроме собственно пароля для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт, одно и то же для всех пользователей.

Для хранения сведений о 20 пользователях потребовалось 400 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе? В ответе запишите только целое число — количество байт.

12. Задание 12 № 5272

Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости, состоит из 8 команд. Четыре команды −

При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →.

Четыре команды проверяют истинность условия отсутствия стены у каждой

сверху свободно снизу свободно слева свободно справа свободно

Цикл

ПОКА условие

последовательность команд

КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

ЕСЛИ условие

ТО команда 1

ИНАЧЕ команда2

КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда2 (если условие ложно).

В конструкциях ПОКА и ЕСЛИ условие может содержать команды проверки, а также слова И, ИЛИ, НЕ, обозначающие логические операции.

Если РОБОТ начнёт движение в сторону находящейся рядом с ним стены, то он разрушится, и программа прервётся.

Сколько клеток лабиринта соответствуют требованию, что, начав движение в ней и выполнив предложенную программу, РОБОТ уцелеет и остановится в закрашенной клетке (клетка F6)?

НАЧАЛО

ПОКА снизу свободно ИЛИ справа свободно

ЕСЛИ снизу свободно

ТО

вниз

КОНЕЦ ЕСЛИ

ЕСЛИ справа свободно

ТО

вправо

КОНЕЦ ЕСЛИ

КОНЕЦ ПОКА

КОНЕЦ

13. Задание 13 № 17333

На рисунке — схема дорог, связывающих пункты А, Б, В, Г, Д, Е, Ж, И, К, Л, М, Н.

Сколько существует различных путей из пункта А в пункт Н, не проходящих через пункт В?

14. Задание 14 № 7309

Решите уравнение: 356 + x = 357

Ответ запишите в десятичной системе счисления.

15. Задание 15 № 18824

Для какого наименьшего целого неотрицательного числа A выражение

(xy < A) ∨ (y > x) ∨ (x ≥ 8)

тождественно истинно, то есть принимает значение 1 при любых целых неотрицательных x и y?

16. Задание 16 № 10287

Ниже на пяти языках программирования записаны две рекурсивные функции: F и G.

Бейсик Python

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

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

Паскаль Алгоритмический язык

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;

алг цел F(цел n)

нач

  если n > 2

    то

      знач := F(n — 1)+G(n — 2)

    иначе

      знач := n

  все

кон

алг цел G(цел n)

нач

  если n > 2

    то

      знач := G(n — 1)+F(n — 2)

    иначе

      знач := n+1

  все

кон

Си

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;

}

Чему будет равно значение, вычисленное при выполнении вызова F(6)?

17. Задание 17 № 37362

В файле содержится последовательность из 10 000 целых положительных чисел. Каждое число не превышает 10 000. Определите и запишите в ответе сначала количество пар элементов последовательности, у которых сумма элементов кратна 80 и хотя бы один элемент из пары делится на 50, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два различных элемента последовательности. Порядок элементов в паре не важен.

17.txt

Ответ: 

18. Задание 18 № 27672

Квадрат разлинован на N×N клеток (1 < N < 17). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вверх. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вверх — в соседнюю верхнюю. При попытке выхода за границу квадрата Робот разрушается. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клетке маршрута Робота.

Задание 18

Откройте файл. Определите максимальную и минимальную денежную сумму, которую может собрать Робот, пройдя из левой нижней клетки в правую верхнюю. В ответ запишите два числа друг за другом без разделительных знаков — сначала максимальную сумму, затем минимальную.

Исходные данные представляют собой электронную таблицу размером N×N, каждая ячейка которой соответствует клетке квадрата.

Пример входных данных:

1 8 8 4
10 1 1 3
1 3 12 2
2 3 5 6

Для указанных входных данных ответом должна быть пара чисел 35 и 15.

19. Задание 19 № 38597

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в которой будет 29 или больше камней.

В начальный момент в куче было S камней, 1 ≤ S ≤ 28.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Укажите такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

20. Задание 20 № 38598

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в которой будет 29 или больше камней.

В начальный момент в куче было S камней, 1 ≤ S ≤ 28.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

— Петя не может выиграть за один ход;

— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания.

21. Задание 21 № 38599

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится не менее 29. Победителем считается игрок, сделавший последний ход, т. е. первым получивший кучу, в которой будет 29 или больше камней.

В начальный момент в куче было S камней, 1 ≤ S ≤ 28.

Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.

Для игры, описанной в задании 19, найдите значение S, при котором одновременно выполняются два условия:

— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Если найдено несколько значений S, в ответе запишите минимальное из них.

22. Задание 22 № 9655

Ниже на пяти языках программирования записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 48, а потом 6.

Бейсик Паскаль

DIM X, A, B, C AS INTEGER

INPUT X

A = 1: B = 0

WHILE X > 0

  C = X MOD 10

  A = A * C

  IF C > B THEN B = C

  X = X 10

WEND

PRINT A

PRINT B

var x, a, b, c: integer;

begin

  readln(x);

  a := 1; b := 0;

  while x>0 do

  begin

    c := x mod 10;

    a := a*c;

    if c>b then b := c;

    x := x div 10;

  end;

  writeln(a); write(b);

end.

Си++ Алгоритмический язык

#include <iostream>

using namespace std;

int main()

{

  int x, a, b, c;

  cin >> x;

  a = 1; b = 0;

  while (x>0) {

    c = x%10;

    a = a*c;

    if (c>b)

      b = c;

    x = x/10;

  }

  cout << a << endl << b << endl;

}

алг

нач

  цел x, a, b, c

  ввод x

  a := 1; b := 0

  нц пока x>0

    c := mod(x,10)

    a := a*c

    если c>b

      то b := c

    все

    x := div(x,10)

  кц

  вывод a, нс, b

кон

Python

x = int(input())

a = 1

b = 0

while x > 0:

    c = x % 10

    a = a*c

    if c > b:

        b = c

    x //= 10

print(a)

print(b)

23. Задание 23 № 18724

Исполнитель Вычислитель преобразует число на экране.

У исполнителя есть три команды, которым присвоены номера:

1. Прибавить 1

2. Умножить на 3

3. Прибавить 2

Первая команда увеличивает число на экране на 1, вторая умножает его на 3, третья увеличивает его на 2.

Программа для исполнителя Вычислитель — это последовательность команд.

Сколько существует программ, которые преобразуют исходное число 1 в число 15 и при этом траектория вычислений содержит числа 10 и 12?

Траектория вычислений программы — это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 7 траектория будет состоять из чисел 8, 10, 30.

24. Задание 24 № 27699

Текстовый файл состоит не более чем из 106 символов LD и R. Определите максимальную длину цепочки вида LDRLDRLDR… (составленной из фрагментов LDR, последний фрагмент может быть неполным).

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Задание 24

25. Задание 25 № 33197

Рассмотрим произвольное натуральное число, представим его всеми возможными способами в виде произведения двух натуральных чисел и найдём для каждого такого произведения разность сомножителей. Например, для числа 16 получим: 16 = 16*1 = 8*2 = 4*4, множество разностей содержит числа 15, 6 и 0. Найдите все натуральные числа, принадлежащие отрезку [1 000 000; 2 000 000], у которых составленное описанным способом множество разностей будет содержать не меньше трёх элементов, не превышающих 100. В ответе перечислите найденные числа в порядке возрастания.

Ответ:

26. Задание 26 № 33771

Предприятие производит оптовую закупку некоторых изделий A и B, на которую выделена определённая сумма денег. У поставщика есть в наличии партии этих изделий различных модификаций по различной цене. На выделенные деньги необходимо приобрести как можно больше изделий B независимо от модификации. Если у поставщика закончатся изделия B, то на оставшиеся деньги необходимо приобрести как можно больше изделий A. Известны выделенная для закупки сумма, а также количество и цена различных модификаций данных изделий у поставщика. Необходимо определить, сколько будет закуплено изделий A и какая сумма останется неиспользованной.

Входные данные.

Задание 26

Первая строка входного файла содержит два целых числа: N — общее количество партий изделий у поставщика и M — сумма выделенных на закупку денег (в рублях). Каждая из следующих N строк описывает одну партию и содержит два целых числа (цена одного изделия в рублях и количество изделий в партии) и один символ (латинская буква A или B), определяющий тип изделия. Все данные в строках входного файла отделены одним пробелом.

В ответе запишите два целых числа: сначала количество закупленных изделий типа A, затем оставшуюся неиспользованной сумму денег.

Пример входного файла:

4 1000

30 8 A

50 12 B

40 14 A

20 10 B

В данном случае сначала нужно купить изделия B: 10 изделий по 20 рублей и 12 изделий по 50 рублей. На это будет потрачено 800 рублей. На оставшиеся 200 рублей можно купить 6 изделий A по 30 рублей. Таким образом, всего будет куплено 6 изделий A и останется 20 рублей. В ответе надо записать числа 6 и 20.

Ответ:

27. Задание 27 № 33772

Набор данных состоит из нечётного количества пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы чётность суммы выбранных чисел совпадала с чётностью большинства выбранных чисел и при этом сумма выбранных чисел была как можно меньше. Определите минимальную сумму, которую можно получить при таком выборе. Гарантируется, что удовлетворяющий условиям выбор возможен.

Входные данные.

Файл A

Файл B

Первая строка входного файла содержит число N — общее количество пар в наборе. Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

Пример входного файла:

5

15 8

5 11

6 3

7 2

9 14

Для указанных данных надо выбрать числа 8, 5, 3, 2 и 9. Большинство из них нечётны, сумма выбранных чисел равна 27 и тоже нечётна. В ответе надо записать число 27.

Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B.

Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

Ответ: 

Просмотр содержимого документа

«2022 ЕГЭ Май Информатика Вариант 5»

Тип 1 № 13614 

i

На рисунке схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о длине этих дорог в километрах.

  П1 П2 П3 П4 П5 П6 П7
П1     15       20
П2           22 18
П3 15           10
П4         9 8  
П5       9     12
П6   22   8     14
П7 20 18 10   12 14  

Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите длину дороги из пункта Г в пункт В. В ответе запишите целое число. ВНИМАНИЕ! Длины отрезков на схеме не отражают длины дорог.

Ответ: 

2

Тип 2 № 27371 

i

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

? ? ? ? F
1   1 1 0
0     0 0
1       0

В ответе напишите буквы xyzw в том порядке, в котором идут соответствующие им столбцы. Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

Ответ: 

3

Тип 3 № 37490 

i

В файле приведён фрагмент базы данных «Продукты» о поставках товаров в магазины районов города. База данных состоит из трёх таблиц.

3.xlsx

Таблица «Движение товаров» содержит записи о поставках товаров в магазины в течение первой декады июня 2021 г., а также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок, шт. занесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Заголовок таблицы имеет следующий вид.

ID операции Дата ID магазина Артикул Тип операции Количество упаковок,
шт.
Цена,
руб./шт.

Таблица «Товар» содержит информацию об основных характеристиках каждого товара. Заголовок таблицы имеет следующий вид.

Артикул Отдел Наименование Ед. изм. Количество
в упаковке
Поставщик

Таблица «Магазин» содержит информацию о местонахождении магазинов. Заголовок таблицы имеет следующий вид.

На рисунке приведена схема указанной базы данных.

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

В ответе запишите только число.

Ответ: 

4

Тип 4 № 13481 

i

Для кодирования некоторой последовательности, состоящей из букв А, Б, В, Г, Д, Е, решили использовать неравномерный двоичный код, удовлетворяющий условию Фано. Для букв А, Б, В, Г использовали соответственно кодовые слова 000, 001, 10, 11. Укажите кратчайшее возможное кодовое слово для буквы Д, при котором код будет допускать однозначное декодирование. Если таких кодов несколько, укажите код с наименьшим числовым значением. Примечание. Условие Фано означает, что никакое кодовое слово не является началом другого кодового слова. Это обеспечивает возможность однозначной расшифровки закодированных сообщений.

Ответ: 

5

Тип 5 № 15622 

i

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1.  Строится двоичная запись числа N.

2.  К этой записи дописываются справа ещё два разряда по следующему правилу: складываются все цифры двоичной записи, если

а)  сумма нечетная к числу дописывается 11,

б)  сумма четная, дописывается 00.

Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число R, которое превышает 114 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе счисления.

Ответ: 

6

Тип 6 № 47308

Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n  — целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m  — целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись

Повтори k [Команда1 Команда2 … КомандаS]

означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм:

Повтори 5 [Вперёд 8 Направо 60 Вперёд 8 Направо 120]

Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.

Ответ: 

7

Тип 7 № 11110 

i

Какой минимальный объём памяти (в Кбайт) нужно зарезервировать, чтобы можно было сохранить любое растровое изображение размером 320×640 пикселей при условии, что в изображении могут использоваться 256 различных цветов? В ответе запишите только целое число, единицу измерения писать не нужно.

Ответ: 

8

Тип 8 № 15626 

i

Все 6-буквенные слова, составленные из букв А, О, У, записаны в обратном алфавитном порядке. Вот начало списка:

1.  УУУУУУ

2.  УУУУУО

3.  УУУУУА

4.  УУУУОУ

……

На каком месте от начала списка находится слово ОУУУОО.

Ответ: 

9

Тип 9 № 27406 

i

Откройте файл электронной таблицы, содержащей вещественные числа  — результаты ежечасного измерения температуры воздуха на протяжении трёх месяцев.

Задание 9

Найдите разность между максимальным значением температуры и её средним арифметическим значением. В ответе запишите только целую часть получившегося числа.

Ответ: 

10

Тип 10 № 45244 

i

Текст романа Льва Николаевича Толстого «Анна Каренина» представлен в виде файла формата «.docx». Откройте его и определите, сколько раз встречается в тексте отдельное слово «душа» со строчной буквы.

В ответе запишите только число.

Задание 10

Ответ: 

11

Тип 11 № 14699 

i

При регистрации в компьютерной системе для каждого пользователя формируется индивидуальный идентификатор, состоящий из 14 символов. Для построения идентификатора используют только латинские буквы (26 заглавных и 26 строчных букв). В базе данных для хранения сведений о каждом пользователе отведено одинаковое минимально возможное целое число байт. При этом используют посимвольное кодирование идентификаторов, все символы кодируют одинаковым минимально возможным количеством бит. Кроме идентификатора для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено 19 байт на каждого пользователя.

Сколько байт нужно для хранения сведений о 25 пользователях? В ответе запишите только целое число – количество байт.

Ответ: 

12

Тип 12 № 27543 

i

Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.

А)  заменить (v, w).

Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды

заменить (111, 27)

преобразует строку 05111150 в строку 0527150.

Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.

Б)  нашлось (v).

Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка

исполнителя при этом не изменяется.

Цикл

    ПОКА условие

        последовательность команд

    КОНЕЦ ПОКА

выполняется, пока условие истинно.

В конструкции

    ЕСЛИ условие

        ТО команда1

        ИНАЧЕ команда2

    КОНЕЦ ЕСЛИ

выполняется команда1 (если условие истинно) или команда1 (если условие ложно)

Дана программа для Редактора:

НАЧАЛО

ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)

    заменить (01, 103)

    заменить (02, 10)

    заменить (03, 210)

КОНЕЦ ПОКА

КОНЕЦ

Известно, что исходная строка начинается с цифры 0, а далее содержит 12 цифр 1, 15 цифр 2 и 17 цифр 3, расположенных в произвольном порядке. Сколько цифр 2 будет в строке, которая получится после выполнения данной программы?

Ответ: 

13

Тип 13 № 15855 

i

На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, З, И, К, Л, М. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.

Сколько существует различных путей из города А в город М, проходящих через город Ж?

Ответ: 

14

Тип 14 № 40989

Значение выражения 2 · 2168 + 4 · 3612 + 615 − 1296 записали в системе счисления с основанием 6. Сколько значащих нулей содержится в этой записи?

Ответ: 

15

Тип 15 № 16045 

i

Для какого наибольшего целого неотрицательного числа A выражение

(y + 2x ≠ 48) ∨ (A < x) ∨ (A < y)

тождественно истинно, то есть принимает значение 1 при любых целых неотрицательных x и y?

Ответ: 

16

Тип 16 № 4650 

i

Последовательность чисел трибоначчи задается рекуррентным соотношением:

F(1) = 0

F(2) = 1

F(3) = 1

F(n) = F(n–3) + F(n–2) + F(n–1), при n >3, где n – натуральное число.

Чему равно девятое число в последовательности трибоначчи?

В ответе запишите только натуральное число.

Ответ: 

17

Тип 17 № 45251 

i

В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых хотя бы одно число делится на минимальный элемент последовательности, кратный 21. Гарантируется, что такой элемент в последовательности есть. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17.txt

Ответ:

18

Тип 18 № 27673 

i

Квадрат разлинован на N×N клеток (1 < N < 17). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз  — в соседнюю нижнюю. При попытке выхода за границу квадрата Робот разрушается. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клетке маршрута Робота.

Задание 18

Откройте файл. Определите максимальную и минимальную денежную сумму, которую может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответ запишите два числа друг за другом без разделительных знаков  — сначала максимальную сумму, затем минимальную.

Исходные данные представляют собой электронную таблицу размером N×N, каждая ячейка которой соответствует клетке квадрата.

Пример входных данных:

1 8 8 4
10 1 1 3
1 3 12 2
2 3 5 6

Для указанных входных данных ответом должна быть пара чисел 41 и 22.

Ответ: 

19

Тип 19 № 28108 

i

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:

        добавить в кучу один камень (действие А) или

        утроить количество камней в куче, а затем убрать из кучи 2 камня (действие Б).

Например, имея кучу из 10 камней, за один ход можно получить кучу из 11 или 28 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится более 30. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 31 или больше камней.

В начальный момент в куче было S камней, 2 ≤ S ≤ 30.

Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.

Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.

Ответ: 

20

Тип 20 № 28109 

i

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:

        добавить в кучу один камень (действие А) или

        утроить количество камней в куче, а затем убрать из кучи 2 камня (действие Б).

Например, имея кучу из 10 камней, за один ход можно получить кучу из 11 или 28 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится более 30. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 31 или больше камней.

В начальный момент в куче было S камней, 2 ≤ S ≤ 30.

Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.

Найдите два таких значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:

— Петя не может выиграть за один ход;

— Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Найденные значения запишите в ответе в порядке возрастания без разделительных знаков.

Ответ: 

21

Тип 21 № 28110 

i

Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может:

        добавить в кучу один камень (действие А) или

        утроить количество камней в куче, а затем убрать из кучи 2 камня (действие Б).

Например, имея кучу из 10 камней, за один ход можно получить кучу из 11 или 28 камней. У каждого игрока, чтобы делать ходы, есть неограниченное количество камней.

Игра завершается в тот момент, когда количество камней в куче становится более 30. Победителем считается игрок, сделавший последний ход, то есть первым получивший кучу, в которой будет 31 или больше камней.

В начальный момент в куче было S камней, 2 ≤ S ≤ 30.

Говорят, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Описать стратегию игрока  — значит, описать, какой ход он должен сделать в любой ситуации, которая ему может встретиться при различной игре противника.

Найдите минимальное значение S, при котором одновременно выполняются два условия:

— у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

— у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Ответ: 

22

Тип 22 № 47549

В файле 22_1.xlsx содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно.

Информация о процессах представлена в файле в виде таблицы. В первой строке таблицы указан идентификатор процесса (ID), во второй строке таблицы  — время его выполнения в миллисекундах, в третьей строке перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0.

Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно.

Типовой пример организации данных в файле:

ID процесса B Время выполнения процесса B (мс) ID процесса(ов) A
1 4 0
2 3 0
3 1 1;2
4 7 3

В данном случае независимые процессы 1 и 2 могут выполняться параллельно, при этом процесс 1 завершится через 4 мс, а процесс 2  — через 3 мс с момента старта. Процесс 3 может начаться только после завершения обоих процессов 1 и 2, то есть, через 4 мс после старта. Он длится 1 мс и закончится через 4 + 1 = 5 мс после старта. Выполнение процесса 4 может начаться только после завершения процесса 3, то есть, через 5 мс. Он длится 7 мс, так что минимальное время завершения всех процессов равно 5 + 7 = 12 мс.

Ответ: 

23

Тип 23 № 15990 

i

Исполнитель Вычислитель преобразует число на экране.

У исполнителя есть три команды, которым присвоены номера:

1.  Прибавить 2

2.  Умножить на 2

3.  Прибавить 3

Первая команда увеличивает число на экране на 2, вторая умножает его на 2, третье увеличивает его на 3.

Программа для исполнителя Вычислитель  — это последовательность команд.

Сколько существует программ, которые преобразуют исходное число 2 в число 22 и при этом траектория вычислений содержит число 11?

Траектория вычислений программы  — это последовательность результатов выполнения всех команд программы. Например, для программы 132 при исходном числе 7 траектория будет состоять из чисел 9, 12, 24.

Ответ: 

24

Тип 24 № 27421 

i

Текстовый файл состоит не более чем из 106 символов XY и Z. Определите максимальное количество идущих подряд символов, среди которых каждые два соседних различны.

Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Задание 24

Ответ: 

25

Тип 25 № 27850 

i

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [245 690; 245 756] простые числа. Выведите на экран все найденные простые числа в порядке возрастания, слева от каждого числа выведите его порядковый номер в последовательности. Каждая пара чисел должна быть выведена в отдельной строке.

Например, в диапазоне [5; 9] ровно два различных натуральных простых числа  — это числа 5 и 7, поэтому для этого диапазона вывод на экране должна содержать следующие значения:

1 5

3 7

Примечание. Простое число  — натуральное число, имеющее ровно два различных натуральных делителя  — единицу и самого себя.

Ответ:

26

Тип 26 № 41001

Во многих компьютерных системах текущее время хранится в формате «UNIX-время»  — количестве секунд от начала суток 1 января 1970 года.

В одной компьютерной системе проводили исследование загруженности. Для этого в течение месяца с момента UNIX-времени 1633046400 фиксировали и заносили в базу данных моменты старта и финиша всех процессов, действовавших в этой системе.

Вам необходимо определить, какое наибольшее количество процессов выполнялось в системе одновременно на неделе, начавшейся в момент UNIX-времени 1634515200, и в течение какого суммарного времени (в секундах) выполнялось такое наибольшее количество процессов.

Входные данные.

Задание 26

Первая строка входного файла содержит целое число N  — общее количество процессов за весь период наблюдения. Каждая из следующих N строк содержит 2 целых числа: время старта и время завершения одного процесса в виде UNIX-времени. Все данные в строках входного файла отделены одним пробелом.

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

При совпадающем времени считается, что все старты и завершения процессов происходят одновременно, в начале соответствующей секунды. В частности, если время старта одного процесса совпадает с временем завершения другого и других стартов и завершений в этот момент нет, то количество активных процессов в этот момент не изменяется.

В ответе запишите два целых числа: сначала максимальное количество процессов, которые выполнялись одновременно на неделе, начиная с момента UNIX-времени 1634515200, затем суммарное количество секунд, в течение которых на этой неделе выполнялось такое максимальное количество процессов.

Ответ:

27

Тип 27 № 28130 

i

Дана последовательность N целых положительных чисел. Необходимо определить количество пар элементов этой последовательности, сумма которых делится на m  =  80 и при этом хотя бы один элемент из пары больше b  =  50.

Входные данные.

Файл A

Файл B

В первой строке входных данных задаётся количество чисел N (2 ≤ N ≤ 10 000). В каждой из последующих N строк записано одно натуральное число, не превышающее 10 000.

Пример организации исходных данных во входном файле:

6

40

40

120

30

50

110

Пример выходных данных для приведённого выше примера входных данных:

3

В ответе укажите два числа: сначала количество пар для файла А, затем для файла B.

Ответ: 

Пояснение. Из данных шести чисел можно составить три пары, удовлетворяющие условию: (40, 120), (40, 120), (50, 110). У пар (40, 40) и (30, 50) сумма делится на 80, но оба элемента в этих парах не превышают 50.

Всем привет! Добрались мы до 25 задания из ЕГЭ по информатике 2023.

Рассмотрим типовые задачи, а так же новые формулировки 25 задания из ЕГЭ по информатике 2023.

Приступаем к первой классической задаче.

Задача (ЕГЭ по информатике, Демо 2022)

Пусть M – сумма минимального и максимального натуральных делителей
целого числа, не считая единицы и самого числа. Если таких делителей
у числа нет, то значение M считается равным нулю.

Напишите программу, которая перебирает целые числа, бо́льшие 700 000,
в порядке возрастания и ищет среди них такие, для которых значение M
оканчивается на 8. Выведите первые пять найденных чисел
и соответствующие им значения M.

Формат вывода: для каждого из пяти таких найденных чисел в отдельной
строке сначала выводится само число, затем – значение М.
Строки выводятся в порядке возрастания найденных чисел.

Количество строк в таблице для ответа избыточно.

ЕГЭ по информатике демоверсия 2022 - задание 25

Решение:

На ЕГЭ по информатике 2023 удобно писать программы на языке Python.

import math
count=0
for i in range(700001, 800000):

    b=0
    
    for j in range(2, int(math.sqrt(i)) + 1):
        if i%j==0:
            b=i//j
            break
    
    
    if  b==0: M=0
    else: M=j+b

    if M!=0 and M%10==8:
        count=count+1
        print(i, M)

    if count==5: break

В данной программе перебираются числа в цикле for, начиная с 700001.

Переменная b — считается наибольшим делителем числа i. Затем, с помощью ещё одного цикла for перебираются числа с 2 до корня числа i (включительно). Ищем тем самым наименьший делитель.

Если до корня числа включительно не встретился ни один делитель, значит, у числа нет делителей, кроме 1 и самого числа.

ЕГЭ по информатике демоверсия 2022 - задание 25 поиск делителей

Пусть у нас есть число A. Если у этого числа есть делитель d1, то он находится до корня этого числа. А вот то число (так же делитель d4), на которое умножается d1, чтобы получить A, будет находиться после корня A.

Получается, что у каждого делителя есть своя пара. У единицы — это само число. Причём один делитель из пары находится до корня, другой после корня. Исключением будет тот случай, когда из числа А извлекается целый корень. Тогда для этого корня не будет пары (парой и будет само это число √A * √A = A).

Таким образом, первый найденный делитель будет являться наименьшим делителем. А вот делительный, который находится в паре с наименьшим делителем, будет наибольшим.

После того, как мы нашли наименьший делитель (он будет сидеть в переменной j) и наибольший делитель b, выходим из второго цикла for.

Если переменная b осталась равна нулю, то, значит, у числа i нет указанных делителей, и переменная M должна равняться 0. Если b не равна нулю, то M=j+b.

Проверить, на что оканчивается число, можно узнав остаток от деления числа на 10.

Переменная count следит, чтобы было распечатано ровно 5 чисел, которые удовлетворяют условию задачи.

Ответ:

700005 233338
700007 100008
700012 350008
700015 140008
700031 24168

Задача (Стандартная)

Напишите программу, которая перебирает целые числа, большие 550 000, в порядке возрастания и ищет среди них такие, для которых наибольший натуральный делитель, не равный самому числу, не является простым числом.

Программа должна найти и вывести первые 6 таких чисел и соответствующие им значения упомянутых делителей.

Формат вывода: для каждого из 6 таких найденных чисел в отдельной строке сначала выводится само число, затем упомянутый делитель. Строки выводятся в порядке возрастания найденных чисел.

Например, для числа 105 наибольший натуральный делитель 35 не является простым, для числа 15 наибольший натуральный делитель 5 — простое число, а для числа 13 такого делителя не существует.

ЕГЭ по информатике демоверсия 2022 - задание 25

Решение:

Здесь мы ищем наибольший делитель числа, как и в прошлом решении.

import math

def Pr(x):
    for i in range(2, int(math.sqrt(x))+1):
        if x%i==0: return False
    return True


count=0
for i in range(550001, 1000000):

    b=0
    
    for j in range(2, int(math.sqrt(i)) + 1):
         if i%j==0:
            b=i//j
            break


    if not(Pr(b)):
        count=count+1
        print(i, b)

    if count==6: break

Чтобы проверить число, является ли оно простым, напишем функцию Pr(). Там мы проходим до корня числа. Если не встретился не один делитель, значит, число простое — возвращаем True. Если до корня хотя бы один делитель встретили — возвращаем False.

Ответ:

550002 275001
550004 275002
550005 183335
550008 275004
550010 275005
550011 183337

Задача (Ровно 4 различных делителя)

Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [258274; 258297], числа, имеющие ровно 4 различных делителя. Выведите для каждого найденного числа два наибольших делителя в порядке возрастания.

Решение:

import math

for i in range(258274, 258298):
    a=[]
    for j in range(1, int(math.sqrt(i))+1):
        if i%j==0:
            a.append(j)
            b=i//j
            if j!=b:
                a.append(b)

    if len(a)==4:
        a.sort()
        print(a[2], a[3])

Здесь для каждого числа i заводим массив a, где будем сохранять все его делители. Идём как всегда до корня. Если мы нашли делитель, мы добавляем его в массив a c помощью команды append и ищем его «брата». Второй делитель («брат») не должен равняться самому делителю j, т.к. нам сказали, что все делители должны быть различны. Одинаковые делители j и b могут получится, если из нашего числа i извлекается целый корень. Ведь для делителя √i является парой этот же делитель ( √i* √i=i).

После прохождения внутреннего цикла (с переменной j) в массиве a будут сидеть все делители числа i. Если их ровно 4, то сортируем массив a и выводим на экран два наибольших.

Ответ:

15193 258281
1427 258287
1493 258289
36899 258293
51659 258295

Задача (Крепкий орешек)

Назовём нетривиальным делителем натурального числа его делитель, не равный единице и самому числу. Найдите все натуральные числа, принадлежащие отрезку [4234679; 10157812] и имеющие ровно три нетривиальных делителя. Для каждого найденного числа запишите в ответе само число и его наибольший нетривиальный делитель. Найденные числа расположите в порядке возрастания.

Решение:

import math

for i in range(4234679, 10157813):
    if int(math.sqrt(i))**2 == i:
        a=[]
        for j in range(2, int(math.sqrt(i))+1):
            if i%j==0:
                a.append(j)
                b=i//j
                if j!=b:
                    a.append(b)
        if len(a)==3:
            a.sort()
            print(i, a[2])

Как у нас могут быть три различных нетривиальных делителя, когда делители идут, как мы выяснили, парами? Это может быть, когда существует целый корень из этого числа. Тогда в паре два числа будут одинаковыми (√i* √i = i). Поэтому в этой задаче нас интересуют числа из которых извлекается елый корень.

Если этим рассуждением не воспользуемся, то программа будет считать очень долго, потому что здесь диапазон и сами числа очень большие.

Далее, решаем, как и в прошлый раз.

Ответ:

4879681 103823
7890481 148877

Задача (ЕГЭ по информатике, 20.06.22)

Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:

— символ «?» означает ровно одну произвольную цифру;

— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.

Например, маске 123*4?5 соответсвуют числа 123405 и 12300405.

Среди натуральных чисел, не превышающих 108, найдите все числа, соответствующие маске 1234*7, делящиеся на 141 без остатка.

В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им результаты деления этих чисел на 141.

Решение:

Здесь самый главный момент заключается в том, что есть верхняя граница 108. Т.е. самое большое число, которое нужно рассмотреть 1234[999]7 <= 108 = 100000000. Нижняя граница тоже задана, когда вместо звёздочки ни одной цифры не будет 12347.

i=12347

#Вместо звёздочки ноль разрядов
if i%141==0:
    print(i, i//141)

#Вместо звёздочки один разряд
for x in '0123456789':
    s = '1234' + x + '7'
    i=int(s)
    if i%141==0:
        print(i, i//141)

#Вместо звёздочки два разряда
for x in '0123456789':
    for y in '0123456789':
        s = '1234' + x + y + '7'
        i=int(s)
        if i%141==0:
            print(i, i//141)

#Вместо звёздочки три разряда
for x in '0123456789':
    for y in '0123456789':
        for z in '0123456789':
            s = '1234' + x + y + z + '7'
            i = int(s)
            if i%141==0:
                print(i, i//141)

Таким образом, нужно рассмотреть, когда вместо звёздочки ноль разрядов, один разряд, два разряда и три разряда.

Каждый разряд перебираем как цифры (символы). Формируем строку s, а затем её переводим в тип int.

Когда два разряда или три разряда нужно перебирать строку с помощью вложенных циклов.

Ответ:

1234737 8757
12341307 87527
12342717 87537
12344127 87547
12345537 87557
12346947 87567
12348357 87577
12349767 87587

17

  1. 1.В файле 17-354.txt содержится последовательность натуральных чисел, по модулю не превышающих 10000. Определите количество пар элементов последовательности, в которых запись большего из двух элементов заканчивается цифрой 2, а сумма квадратов элементов пары меньше, чем квадрат наибольшего из всех элементов последовательности, запись которых заканчивается цифрой 9. В ответе запишите два числа: сначала количество найденных пар, затем максимальную сумму квадратов элементов этих пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 2.В файле 17-354.txt содержится последовательность натуральных чисел, по модулю не превышающих 10000. Определите количество пар элементов последовательности, в которых запись меньшего из двух элементов заканчивается цифрой 4, а сумма квадратов элементов пары меньше, чем квадрат наименьшего из всех элементов последовательности, запись которых заканчивается цифрой 1. В ответе запишите два числа: сначала количество найденных пар, затем максимальную сумму квадратов элементов этих пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 3.В файле 17-354.txt содержится последовательность натуральных чисел, по модулю не превышающих 10000. Определите количество пар элементов последовательности, в которых запись только одного элемента из двух заканчивается цифрой 8, а сумма квадратов элементов пары больше, чем квадрат наибольшего из всех элементов последовательности, запись которых заканчивается цифрой 5. В ответе запишите два числа: сначала количество найденных пар, затем минимальную сумму квадратов элементов этих пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 4.В файле 17-354.txt содержится последовательность натуральных чисел, по модулю не превышающих 10000. Определите количество пар элементов последовательности, в которых запись только одного элемента из двух заканчивается цифрой 3, а сумма квадратов элементов пары меньше, чем квадрат наименьшего из всех элементов последовательности, запись которых заканчивается цифрой 3. В ответе запишите два числа: сначала количество найденных пар, затем максимальную сумму квадратов элементов этих пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 5.В файле 17-353.txt содержится последовательность натуральных чисел, не превышающих 10000. Симметричной парой называется такая пара чисел в заданной последовательности, элементы которой расположены на равном расстоянии от концов последовательности. Например, в последовательности 1 2 3 4 3 5 1 симметричными парами назовем пары (1, 1), (2, 5), (3, 3). Число 4 не образует пару, так как оно находится на равном удалении от краев, следовательно, это одно число, а не два.
    Найдите количество симметричных пар таких, что среднее арифметическое максимального и минимального значений последовательности строго меньше значения одного элемента пары и строго больше значения второго элемента пары.
    В качестве ответа запишите количество найденных пар и максимальную сумму элементов среди найденных пар.

17

  1. 6.В файле 17-352.txt содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 10 000 включительно. Определите количество пар последовательности, в которых оба числа не меньше всех чисел последовательности, которые кратны 73. Гарантируется, что такой элемента в последовательности есть. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 7.В файле 17-345.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые — значения от 1 до 10 000 включительно. Определите количество пар последовательности, в которых только одно число меньше разности максимального и минимального из чисел последовательности, оканчивающихся на 52.
    В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 8.В файле 17-344.txt содержится последовательность целых чисел. Элементы последовательности – натуральные числа, не превосходящие 100000. Определите количество пар последовательности, в которых сумма чисел четна, а разница между числами кратна минимальному числу, кратному 103. Гарантируется, что элемент, кратный 103, в последовательности есть. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 9.В файле 17-342.txt содержится последовательность целых чисел. Элементы последовательности – натуральные числа, не превосходящие 10000. Найдите такие пары элементов, в которых только одно число находится между значениями минимального кратного 37 и максимального кратного 73. Гарантируется, что такая пара в последовательности есть. В ответе запишите количество найденных пар и минимальную сумму элементов среди таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 10.В файле 17-341.txt содержится последовательность целых чисел. Элементы последовательности – целые числа, не превосходящие по модулю 10000. Найдите такие пары элементов, в которых произведение элементов больше, чем произведение рядом стоящих чисел (перед и после пары). В качестве ответа выведите максимальную сумму среди найденных пар, затем количество таких из этих пар, в которых есть хотя бы одно число, большее среднего арифметического всех чисел в файле. Под парой в задаче подразумевается два подряд идущих числа. Первая и последняя пара в файле не рассматриваются, так как перед ними (или после них) нет чисел.

17

  1. 11.В файле 17-340.txt содержится последовательность целых чисел. Элементы последовательности – пятизначные натуральные числа. Определите количество пар элементов последовательности, для которых в восьмеричной записи обоих чисел пары максимальная цифра расположена левее минимальной цифры, а сумма чисел пары меньше, чем среднее арифметическое всех чисел в файле, кратных 22. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 12.В файле 17-339.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –100 000 до 100 000 включительно. Определите количество пар последовательности, в которых сумма элементов меньше минимального положительного элемента последовательности, кратного 19. Гарантируется. что такой элемент в последовательности есть. В ответе запишите количество найденных пар, затем абсолютное значение максимальной из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 13.В файле 17-338.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар элементов последовательности, в которых остаток от деления хотя бы одного из элементов на 117 равен минимальному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.

17

  1. 14.В файле 17-328.txt содержится последовательность целых чисел. Элементы последовательности – четырёхзначные натуральные числа. Найдите все тройки элементов последовательности, для которых восьмеричная запись суммы любой пары чисел тройки содержит только чётные цифры, а сумма всех чисел тройки меньше, чем сумма цифр всех чисел в файле, делящихся на 22. В ответе запишите количество найденных троек, затем минимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

17

  1. 15.В файле 17-328.txt содержится последовательность целых чисел. Элементы последовательности – четырёхзначные натуральные числа. Найдите все тройки элементов последовательности, для которых все суммы пар, составленные из всех чисел тройки – представляют собой палиндром, а наибольшая из этих сумм меньше, чем максимальный элемент последовательности кратный 50. В ответе запишите количество найденных троек, затем максимальную из сумм элементов таких троек. В данной задаче под тройкой подразумевается три идущих подряд элемента последовательности.

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


ЕГЭ информатика 22 задание разбор, теория, как решать.

Анализ программы с циклами и условными операторами, (П) — 1 балл

Е22.9 В файле содержится информация о вычислительных процессов проектов P1, Р2 и P3

(Е. Джобс) В файле содержится информация о вычислительных процессов проектов P1, Р2 и P3, которые могут выполняться параллельно или последовательно. Каждый вычислительный процесс разбивается на подпроцессы. Будем говорить, что подпроцесс B зависит от подпроцесса A, если для выполнения подпроцесса B необходимы результаты выполнения подпроцесса A внутри вычислительного процесса (Р1, Р2 или Р3). В этом случае …

Читать далее

Е22.8 процессов проектов P1 и P2, которые могут выполняться параллельно или последовательно

(А. Кожевникова) В файле содержится информация о вычислительных процессов проектов P1 и P2, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В …

Читать далее

Е22.7 В файле содержится информация о вычислительных процессов проектов P1 и P2

(Е. Джобс) В файле содержится информация о вычислительных процессов проектов P1 и P2, которые могут выполняться только последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первой …

Читать далее

Е22.6 если для выполнения процесса B необходимы результаты выполнения процесса A

(В. Шубинкин) В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом …

Читать далее

Е22.5 N вычислительных процессов, которые могут выполняться параллельно или последовательно

(Л. Евич) В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом …

Читать далее

Е22.4 Будем говорить, что процесс B зависит от процесса A

(В. Шубинкин) В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом …

Читать далее

Е22.3 Определите максимально возможное целочисленное t (время выполнения процесса)

В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы …

Читать далее

Е22.2 Определите минимальное время, через которое завершится выполнение всей совокупности процессов

(Л. Евич) В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом …

Читать далее

Е22.1 В файле содержится информация о совокупности N вычислительных процессов

В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы …

Читать далее

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

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

  • Егэ информатика 2020 крылов сборник
  • Егэ информатика задание 15 графики
  • Егэ информатика 2020 гроб
  • Егэ информатика задание 14218
  • Егэ информатика 2018 сборник

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

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