Демоверсия егэ информатика 2024 решение

группа vk вконтакте

группа fb facebook

*** ПЛЕЙЛИСТ КАНАЛА ЮТЬЮБ ***
 
ЕГЭ по информатике -> демоверсия ЕГЭ 2024
 
Скачать pdf демоверсии варианта ->

1.
1 задание. Демо ЕГЭ 2024 информатика, ФИПИ:

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

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


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

Ответ: 35


✍ Решение:

  • Рядом с каждой вершиной проставим количество ребер вершины (степень вершины). Кроме того, граф симметричен:
  • Поскольку уникальная вершина здесь только одна, и она находится в центре, то рассмотрим остальные вершины. Все остальные вершины и имеют степень 3, кроме вершин А и B, которые имеют степень 2:
  • B = 2(D3,C6)
    A = 2(G3,C6)
  • Найдем эти вершины в таблице: пункты 2 и 6.
  • По таблице видим, что на пересечении данных пунктов находятся пункты 7 и 4, соответствующие вершинам D3 и G3.
  • Так как вершине C соответствует единственный уникальный пункт 1, то в таблице остаются только пункт 3 и 5, которые и соответствуют вершинам E и F.

Ответ: 35

2.
2 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

Миша заполнял таблицу истинности логической функции F

(x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w, x, y, z.

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

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

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

Ответ: wzyx

🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

🎦 Теоретическое решение подобного задания: RuTube

✍ Решение:

    ✎ Теоретическое решение:

    ✎ Программное решение:
    Язык pascalABC.NET (классический):

    begin
      writeln('x y z w');
      for var x := false to true do
        for var y := false to true do
          for var z := false to true do
            for var w := false to true do
            begin
              var f := not ((x and not y) or (y = z) or not w);
              if f then
                println(Ord(x), Ord(y), ord(z), ord(w))
            end;
    end.

    Язык pascalABC.NET (LINQ):

    ##
    uses school;
    var t:=TrueTable((x,y,z,w)->(x and not y)or(y = z)or not w);
    TrueTablePrint(t,0,'xyzw'); // 0 так как для лжи

    Python:

    # создадим функцию для вычисления значения логического выражения
    def f(x, y, z, w):
        return (x and not y) or (y == z) or not w
    from itertools import *
    # перебор всех пробелов
    for a1, a2, a3, a4 in product([0, 1], repeat=4):
        # все наборы
        t = [(a1,a2,0,0),(1,0,a3,0),(1,0,1,a4)]
        # проверяем все ли наборы уникальны
        if len(set(t)) != len(t):
            continue
        # перебор всех перестановок имен столбцов
        for p in permutations('xyzw'):
        # проверка на совпадение результата
            if [f(**dict(zip(p,r))) for r in t]==[0,0,0]:
                print(*p, sep='')

3.
3 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

Задание выполняется с использованием прилагаемых файлов

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

ID операции Дата ID магазина Артикул Количество упаковок Тип операции

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

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

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

ID магазина Район Адрес

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

Используя информацию из приведённой базы данных, определите общую массу (в кг) всех видов зефира, полученных магазинами на улице Металлургов за период с 4 по 13 июня включительно.
В ответе запишите только число.

Ответ: 3570
✍ Решение:

  • Задание можно выполнить использую опцию Фильтр в Excel.
  • Перейдем в лист Товары. Выделим полностью первую строку и применим к ней фильтр (меню Данные Фильтр).
  • В фильтре для столбца С с товарами выбираем сначала Выделить всё (чтобы отменить все выделения), а затем — только значения, связанные с зефиром:
  • Получаем в результате записи, запоминаем артикулы (4,5,6,7):
  • Переходим на лист с Магазинами и отфильтровываем точно так же записи для улицы Металлургов, запоминаем ID магазинов (М2, М16):
  • Переходим на лист Движение товаров. Ставим фильтр полностью на первую строку. Наложим фильтр на поле ID магазина — выбираем М2 и М16, и Артикул — 4, 5, 6, 7. Затем используем фильтр для поля «тип операции» (выбираем значение «поступление») и для поля «дата» (выбираем значения от 3 до 14 июня):
  • Для подсчета общей массы:
  • отсортируем полученные данные по значению артикула;
  • подсчитаем сумму упаковок каждого артикула: выделяем соответствующие ячейки и смотрим в строку состояния;
  • переходим на лист Товар и копируем данные о кол-ве в упаковке;
  • В полученной таблицы проводим расчёт (Кол-во упаковок * кол-во в упаковке / 1000):

Ответ: 3570


4.
4 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

А – 000
Б – 001
В - 0101
Г - 0100
Д - 011
Е - 101

Какое наименьшее количество двоичных знаков потребуется для кодирования двух оставшихся букв?
В ответе запишите суммарную длину кодовых слов для букв: Ж, З

Ответ: 5

✍ Решение:

    Для решения используем дерево. Влево откладываем 0, вправо — 1:

    Для букв Ж и З имеем кодовые слова: 100 и 11. Суммарная длина = 5.

Ответ:

5


5.
5 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.

Например, для исходного числа 12 = 11002 результатом является число 11001002 = 100, а для исходного числа 4 = 1002 это число 100112 = 19.

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

Ответ: 163

🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

✍ Решение:

    ✎ Программное решение:

    Язык pascalABC.NET (классический):

    uses school;
    begin
      var l := new List<integer>;
      for var n:=10 to 1000 do
      begin
        var r:=bin(n);
        if n.Divs(3) then
          r+=(r[r.Length-2]+ r[r.Length-1]+r[r.Length]) // r+= r[length(r)-2:]
        else
          r+= bin((n mod 3)*3);
        var r10:=dec(r,2);
         if r10>151 then
         begin
           l.Add(r10);
         end
      end;
      l.Min.Print;
    end.
    Python:

    res = set()
    for x in range(1, 152):
       nx = bin(x)[2:]
       if x % 3 == 0:
         nx += nx[-3: ]
       else:
         nx += bin((x%3) * 3)[2:]
       R = int(nx, 2)
       if R > 151:
          res.add(R)
    print(min(res))

Ответ: 163


6.
6 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

1. Черепахе был дан для исполнения следующий алгоритм:

Повтори 7 [Вперёд 10 Направо 120].

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

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

Запись Повтори k [Команда1 Команда2 … КомандаS] означает, что последовательность из S команд повторится k раз.

Черепахе был дан для исполнения следующий алгоритм:

Повтори 2 [Вперёд 8 Направо 90 Вперёд 18 Направо 90]
Поднять хвост
Вперёд 4 Направо 90 Вперёд 10 Налево 90
Опустить хвост
Повтори 2 [Вперёд 17 Направо 90 Вперёд 7 Направо 90]

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

Ответ: Пример 1: 38, Пример 2: 275

✍ Решение:

    Задание 1:

  • Запустите программу Кумир.
  • В окне редактора введите код для Черепахи:
  • использовать Черепаха
    алг
    нач
     цел а
     опустить хвост
     нц для а от 1 до 7
       вперед(10)
       вправо(120)
     кц
    кон
  • Настройте сетку:
  • Посчитаем точки:

✎ Программное решение:

Python:

from turtle import *
# увеличиваем масштаб в 20
tracer(0)
lt(90)
pd()
for _ in range(7):
 fd(10*20)
 rt(120)
up()
# рисуем точки с учетом масштаба (_* 20)
for x in range(20):
 for y in range(20):
  goto(x*20, y*20)
  dot(5)
update()

Ответ: 38

Задание 2:
✎ Аналитическое решение:

  • Первый цикл Повтори 2 [Вперёд 8 Направо 90 Вперёд 18 Направо 90]: Черепаха рисует прямоугольник 8 х 18 и останавливается в начальной точке.
  • После чего Черепаха перемещается на 4 «шага» выше и 10 «шагов» правее: Вперёд 4 Направо 90 Вперёд 10 Налево 90.
  • Из этой точки второй цикл Повтори 2 [Вперёд 17 Направо 90 Вперёд 7 Направо 90]: Черепаха рисует прямоугольник 17 х 7.
  • По заданию необходимо найти точки внутри объединения фигур. Объединение означает всю область занимаемую И первым прямоугольником И вторым.
  • Посчитаем количество точек:
  • Прямоугольник 8х18: 9*19 = 171
    Прямоугольник 7х17: 8*18 = 144
    Внутренний прямоугольник 4х7, который нужно убрать (он уже учтен в прямоугольнике 8х18):
    5*8 = 40
    Получаем: 171 + 144 - 40 = 275

    ✎ Программное решение:

    Python:

    from turtle import *
    screensize(1200, 1200)
    tracer(0)
    lt(90)
    pd()
    for _ in range(2):
     fd(8*20)
     rt(90)
     fd(18*20)
     rt(90)
    up()
    fd(4*20); rt(90)
    fd(10*20); lt(90)
    down()
    for _ in range(2):
     fd(17*20)
     rt(90)
     fd(7*20)
     rt(90)
    up()
    for x in range(30):
     for y in range(30):
      goto(x*20, y*20)
      dot(5)
    update()

    Ответ: 275

    7.
    7 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Прибор автоматической фиксации нарушений правил дорожного движения делает цветные фотографии размером 1024×768 пикселей, используя палитру из 4096 цветов. Для передачи снимки группируются в пакеты по 256 штук. Определите максимальный размер одного пакета фотографий в Мбайт.

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

    Ответ: 288

    ✍ Решение:

    • По формуле объема файла изображения имеем:
    • I = N * i

      где N — общее количество пикселей или разрешение,
      а i — глубина цвета (количество бит, выделенное на 1 пиксель)

    • Глубину цвета можно найти из формулы:
    • 2i=кол-во цветов
    • Из формулы имеем i = 12.
    • Посчитаем объем, необходимый для передачи одной фотографии:
    • I = 1024*768*12 бит = 1024*768*12 / (8 * 1024 * 1024) Мбайт = 1.125 Мбайт

      Теперь вычислим объем, необходимый для передачи пакета:

      1.125 * 256 = 288 Мбайт

    Ответ: 288

    * При устном решении задания легче переводить значения в степени двойки, так 1024=210, 256=28, 8 = 23. После этого значения легко сокращаются в обыкновенной дроби.

    8.
    8 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

  • Сколько существует восьмеричных пятизначных чисел, не содержащих в своей записи цифру 1, в которых все цифры различны и никакие две чётные или две нечётные цифры не стоят рядом?
  • Ответ: 180

    🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

    ✍ Решение:

      ✎ Аналитическое решение:

    • Цифры 8-й с.с.: 0 1 2 3 4 5 6 7
    • Из них четные цифры: 0, 2, 4, 6 и нечетные цифры: 3, 5, 7.
    • По условию четные и нечетные цифры не могут стоять рядом. Кроме того, цифры не повторяются Значит, получаем два варианта:
    • Н Ч Н Ч Н : 3*4*2*3*1 = 72 числа 
      Ч Н Ч Н Ч: 3*3*3*2*2 = 108 чисел (первый не может быть 0!)
      108 + 72 = 180

      ✎ Программное решение:
      Язык pascalABC.NET (классический):

      ##
      var count:=0;
      foreach var a1 in '1234567' do
        foreach var a2 in '01234567' do
          foreach var a3 in '01234567' do
            foreach var a4 in '01234567' do
              foreach var a5 in '01234567' do
              begin
                var number:=a1+a2+a3+a4+a5;
                if number.Count = number.Distinct.Count then
                if (number.countOf('1')=0) then
                  if ((integer(a1)+integer(a2)).NotDivs(2)) and
                   ((integer(a2)+integer(a3)).NotDivs(2)) and
                   ((integer(a3)+integer(a4)).NotDivs(2)) and
                   ((integer(a4)+integer(a5)).NotDivs(2)) then
                            begin
                            count+=1;
                            //print(number);
                            end;
              end;
      print(count)

      Язык pascalABC.NET (LINQ):

      ##
      uses school;
      var numb:='01234567'.cartesian(5)// т.к. цифр 5 штук
        .where(w->w.First<>'0') // первая цифра не может быть 0
        .where(w->w.count=w.distinct.count)
        .where(w->w.CountOf('1')=0)
        .where(w->w.Pairwise.All(\(a,b)-> ((integer(a)+integer(b))mod 2 <>0)))// проверка пар 6 и нечетное
        .count.print

      Язык Python:

      from itertools import permutations
      k = 0
      for d in permutations([0, 2, 3, 4, 5, 6, 7], r=5):
       if d[0] != 0 and all(a % 2 != b % 2 for a, b in zip(d, d[1:])):
         k += 1
      print(k)

    9.
    9 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Задание выполняется с использованием прилагаемых файлов

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

  • в строке есть два числа, каждое из которых повторяется дважды, остальные три числа различны;
  • среднее арифметическое всех повторяющихся чисел строки меньше среднего арифметического всех её чисел.
  • В ответе запишите только число.

    Ответ: 83
    ✍ Решение:

    • Откроем файл электронной таблицы. Будем считать, сколько встречается каждый ячейка первой строки в диапазоне всех ячеек первой строки. Для этого создадим формулы и расположим их также в первой строке:
    • H1 = СЧЁТЕСЛИ($A1:$G1;A1)

      т.е. в диапазоне A1:G1 ищем А1. Знак доллара используется для фиксации буквы при копировании.
      Скопируйте формулу на 6 ячеек вправо:

      I1 = СЧЁТЕСЛИ($A1:$G1;B1)
      J1 = СЧЁТЕСЛИ($A1:$G1;C1)
      K1 = СЧЁТЕСЛИ($A1:$G1;D1)
      L1 = СЧЁТЕСЛИ($A1:$G1;E1)
      M1 = СЧЁТЕСЛИ($A1:$G1;F1)
      N1 = СЧЁТЕСЛИ($A1:$G1;G1)
      
    • Выделите диапазон ячеек с созданными формулами и щелкните по маркеру копирования (справа), чтобы скопировать формулы на нижние строки.
    • Затем создадим формулы для поиска строк, в которых 2 пары повторяющихся чисел, то есть 4 двойки, и остальные числа не повторяются, т.е. 3 единицы. Вместо логического результата будем выводить 0 или 1. Будем использовать отдельно две формулы:
    • O1 = ЕСЛИ((СЧЁТЕСЛИ(H1:N1; 2) = 4);1;0)  
      P1 = ЕСЛИ((СЧЁТЕСЛИ(H1:N1; 1) = 3);1;0) 

    • Теперь найдем среднее арифметическое повторяющихся чисел и неповторяющихся чисел, чтобы в дальнейшем их сравнить. Будем использовать функцию СУММЕСЛИ для поиска двоек в диапазоне H:N, и последующего сложения соответствующих им ячеек диапазона A:G. Результат разделим на 4:
    • Q1 = СУММЕСЛИ(H1:N1; 2; A1:G1)/4
    • Аналогичные вычисления выполним для поиска среднего арифметического неповторяющихся чисел:
    • R1 = СУММЕСЛИ(H1:N1; 1; A1:G1)/3
      
    • Далее выполним сравнение средних арифметических и умножим результат на произведение результатов в O1 и P1. Таким образом, получим единицу, в случае выполнения всех условий и 0 — в обратном случае:
    • S = O1*P1*(Q1<R1)
    • Скопируем формулу на весь столбец и посчитаем сумму по столбцу:
    • T = СУММ(S:S)

    Ответ: 83


    10.
    10 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Задание выполняется с использованием прилагаемых файлов

    Определите, сколько раз в тексте главы II повести А.И. Куприна «Поединок» встречается сочетание букв «все» или «Все» только в составе других слов, но не как отдельное слово. В ответе укажите только число.

    Ответ: 9
    ✍ Решение:

    • Необходимо оставить только главу II, всё остальное удалить.
    • Выделим всё ДО главы II и удалим его:
    • Ctrl+F ищем II; ставим курсор перед главой.
    • Ctrl+Shift+Home выделим текст ДО главы.
    • Удаляем.
    • Найдем начало третьей главы (Ctrl+F ищем III.
    • Ctrl+Shift+End выделим текст до конца документа.
    • Удалим его.
    • С помощью меню замены (Ctrl+H) удалим все отдельные слова «Все» и «все» (отмечаем флажки «слово целиком», «с учетом регистра»)

    Ответ: 9


    11.
    11 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 60 символов и содержащий только десятичные цифры и символы из 250-символьного специального алфавита.
    В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит.
    Определите объём памяти (в Кбайт), необходимый для хранения 65 536 идентификаторов.
    В ответе запишите только целое число – количество Кбайт.

    Ответ: 4352

    ✍ Решение:

    • Чтобы найти количество бит, необходимое для хранения одного идентификатора, для начала нужно найти количество бит, необходимых для хранения 1 символа в идентификаторе. По формуле получаем:
    • 250 + 10 = 2N 
      -> N ~ 9 бит (т.к. 8 мало)
    • Идентификатор состоит из 60 символов. Значит для его хранения необходимо выделить:
    • 60 * 9 = 540 бит всего на идентификатор
    • Поскольку сведения об идентификаторе сохраняются в байтах, то переведем:
    • 540 бит / 8 =67,5 ~ 68 байт (67 не хватит)
    • Теперь найдем сколько байт отводится для хранения информации о 65536 идентификаторах и переведем в кБайты:
    • 68 * 65536 : 210 = 4352

    Ответ: 4352


    12.
    12 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

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

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

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

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

    НАЧАЛО
    ПОКА нашлось (52) ИЛИ нашлось (2222) ИЛИ нашлось (1122)
     ЕСЛИ нашлось (52)
       ТО заменить (52, 11)
     КОНЕЦ ЕСЛИ
     ЕСЛИ нашлось (2222)
       ТО заменить (2222, 5)
     КОНЕЦ ЕСЛИ
     ЕСЛИ нашлось (1122)
       ТО заменить (1122, 25)
     КОНЕЦ ЕСЛИ
    КОНЕЦ ПОКА
    КОНЕЦ 
    

    На вход приведённой выше программе поступает строка, начинающаяся с цифры «5», а затем содержащая n цифр «2» (3 < n < 10 000). Определите наибольшее значение n, при котором сумма цифр в строке, получившейся в результате выполнения программы, равна 64.

    Ответ: 156

    🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

    ✍ Решение:

      ✎ Решение с использованием программирования:
      ✎ Программное решение:
      Язык 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
      
      begin
        var sum: biginteger;
        sum := 0;
        for var n := 4 to 9999 do
        begin
          var s := '5' + '2' * n;
          while ('52' in s) or ('2222' in s) or ('1122' in s) do
          begin
            if '52' in s then s := s.Replace('52', '11', 1);
            if '2222' in s then s := s.Replace('2222', '5', 1);
            if '1122' in s then s := s.Replace('1122', '25', 1);
          end;
          var numb := s.ToBigInteger;
          while numb > 0 do
          begin
            sum += numb mod 10;
            numb := numb div 10;
          end;
          if sum = 64 then
            print(n);
          sum := 0;
        end;
      end.

      Язык Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      res = set()
      for n in range(10, 1000):
       s = '5' + '2'*n
       while '52' in s or '2222' in s or '1122' in s:
         if '52' in s:
          s = s.replace('52', '11', 1)
         if '2222' in s:
          s = s.replace('2222', '5', 1)
         if '1122' in s:
          s = s.replace('1122', '25', 1)
       if sum(map(int, s)) == 64 :
         res.add(n)
      print(max(res))

    13.
    13 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате
    применения поразрядной конъюнкции к заданному адресу узла и маске сети.
    Сеть задана IP-адресом 192.168.32.160 и маской сети 255.255.255.240.
    Сколько в этой сети IP-адресов, для которых сумма единиц в двоичной записи IP-адреса чётна?

    В ответе укажите только число.

    Ответ: 8
    ✍ Решение:

      ✎ Аналитическое решение:
      Для начала вспомним, что маска в двоичном коде всегда имеет структуру: сначала все единицы, затем все нули: 1…10…0. Число 255 в двоичной с.с. представляет собой 8 единиц. Т.е. в нашем случае маска:

      11111111.11111111.11111111.11110000

      Последний байт: 24010 = 111100002

    • Переведем в двоичную с.с. все байты адреса сети:
    • 192 = 11000000
      168 = 10101000
      32 = 00100000
      160 = 10100000
    • Посчитаем кол-во единиц: 8 (четное число)
    • Также вспомним, что адрес сети — это результат поразрядной конъюнкции маски и IP-адреса в двоичной системе. То есть биты, соответствую единицам в маске сети, останутся теми же самыми. Различаться они могут только там, где нули в маске сети. Выпишем правый байт адреса и маски сети:
    •   10100000
      &
        11110000
        1010????
    • То есть вместо знаков вопрос мы может поставить 1 или 0, получив новый Ip-адрес. Общее кол-во адресов:
    • 24 = 16
    • Поскольку в адресе сети четное кол-во единиц, то оно и должно таким остаться. То есть отсечем все нечетные варианты (их будет ровно половина):
    • 16 / 2 = 8

    ✎ Программное решение:
    Язык pascalABC.NET (классический):

     

    Язык Python:

    from ipaddress import *
    net = ip_network('192.168.32.160/255.255.255.240')
    print(len([1 for ip in net
     if bin(int(ip))[2:].count('1') % 2 == 0]))

    Ответ: 8


    14.
    14 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:
    Пример 1:
    Операнды арифметического выражения записаны в системе счисления с основанием 19.

    98897x2119 + 2x92319 
    

    В записи чисел переменной x обозначена неизвестная цифра из алфавита 19-ричной системы счисления.
    Определите наибольшее значение x, при котором значение данного арифметического выражения кратно 18.
    Для найденного x вычислите частное от деления значения арифметического выражения на 18 и укажите его в ответе в десятичной системе счисления.
    Основание системы счисления указывать не нужно.

    ИЛИ
    Пример 2:
    Значение арифметического выражения

    3 ∙ 31258 + 2 ∙6257 – 4 ∙6256 + 3 ∙1255 – 2 ∙254 – 2024

    записали в системе счисления с основанием 25. Сколько значащих нулей
    содержится в этой записи?

    Ответ: Пример1: 469034148 Пример2: 9

    🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

    ✍ Решение:

      ✎ Программное решение:

      Пример 1:

      Язык pascalABC.NET (классический):

      uses school;
      begin
      foreach var x in '0123456789abcdefghi'do
      begin
        var a:=('98897'+x+'21'); // строковое значение
        var b:=('2'+x+'923');// строковое значение
        var a1:= dec(a,19); // перевод в десятичную сс 
        var b1:=dec(b,19);
        var s:=a1 + b1;
        if s mod 18 =0 then
        begin
          //print(x,s);
          print((s/18));
          end;
      end;
      end.

      Язык python:

      for x in '0123456789abcdefghi'[::-1]:
       sm = int(f'98897{x}21', 19) + int(f'2{x}923', 19)
       if sm % 18 == 0:
       print(sm // 18)
       break
      Пример 2:

      Язык pascalABC.NET (классический):

      ##
      uses school;
      var n:=3*3125bi**8 + 2*625bi**7 - 4*625bi**6 + 3*125bi**5 -2*25bi**4 - 2024;
      toBase(n,25).CountOf('0').Print;

      Язык python:

      x = 3*3125**8 + 2*625**74*625**6 + 3*125**52*25**42024
      k = 0
      while x > 0:
       if x % 25 == 0:
       k += 1
       x //= 25
      print(k)

    15.
    15 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

    (x + 2y < A) ∨ (y > x) ∨ (x > 60)

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

    Ответ: 181

    * в ответах ФИПИ дано ошибочное 7

    🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

    ✍ Решение:

      ✎ Теоретическое решение:

      ✎ Программное решение:
      Язык pascalABC.NET (классический):

      begin
        for var A := 1 to 200 do
        begin
          var ok := 1;
          for var x := 1 to 500 do
            for var y := 1 to 500 do
            begin
              if (x + 2 * y < A) or (y > x) or (x > 60)=false then
              begin
               ok:=0;
              end;
            end;
            if ok=1 then print(a);
         end;
      end.

      Язык Python:

      def f(A, x ,y):
        return (x +2*y < A) or (y > x) or (x > 60)
      for A in range(1000):
        if all(f(A, x ,y)
            for x in range(1000)
            for y in range(1000)):
          print(A)
          break

    16.
    16 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Алгоритм вычисления значения функции F(n), где nнатуральное число, задан следующими соотношениями:

    F(n) = n при n > 2024;
    F(n) = n × F(n + 1), если n ≤ 2024
    

    Чему равно значение выражения F(2022) / F(2024)?

    Ответ: 4090506

    🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

    ✍ Решение:

    ✎ Программное решение:
    PascalABC.NET:
    Решается только с типом данных BigInteger!

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    function f(n: integer): biginteger;
    begin
      if n > 2024 then result := n
      else result :=  n * f(n + 1);
    end;
     
    begin
      print(f(2022) / f(2024));
    end.

    Питон:

    1
    2
    3
    4
    5
    6
    
    def f(n):
        if n>2024:
            return n
        else:
            return n*f(n+1)
    print(f(2022)/f(2024))

    C++:

    1
    
     

    Ответ: 4090506


    17.
    17 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Задание выполняется с использованием прилагаемых файлов

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

    Ответ: 959 | 97471

    🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

    ✍ Решение:

      ✎ Программное решение:
      Язык pascalABC.NET (классический):

      ##
      var a := ReadLines('17_2024.txt').Select(t -> t.ToInteger).ToArray;
      var counter := 0;
      var maxSum := 0;
      var m := 0;
      for var i := 0 to a.High do
      begin
        if a[i] mod 100 = 13 then
        m := max(a[i], m);
      end;
      for var i := 0 to a.High - 2 do
      begin
        if((a[i] in 100..999) and (a[i + 1] in 100..999) and (not (a[i + 2] in 100..999))) or
        ((a[i + 1] in 100..999) and (a[i + 2] in 100..999) and (not (a[i] in 100..999))) or
      ((a[i] in 100..999) and (a[i + 2] in 100..999) and (not (a[i + 1] in 100..999))) then
          if (a[i] + a[i + 1] + a[i + 2]) <= m then
          begin
            counter += 1;
            maxSum := max(maxSum, (a[i] + a[i + 1] + a[i + 2]));
          end;
      end;
      println(counter, maxSum)

      Язык pascalABC.NET (LINQ):

      ##
      uses school;
      var a := ReadLines('17_2024.txt').Select(t -> t.ToInteger);
      var m:=a.where(x->x mod 100 = 13).max;
      var triples := a.NWise(3)
      .Where(\(a,b,c)->((a in 100..999) and (b in 100..999) and (not (c in 100..999 ))) or
      ((b in 100..999) and (c in 100..999) and (not (a in 100..999 ))) or
      ((a in 100..999) and (c in 100..999) and (not (b in 100..999 ))))
      .Where (\(a,b,c)-> a+b+c<=m);
      triples.Count.Print; 
      var maxSum:=triples.Select(t->(t[0]+t[1]+t[2])).max.print;

      Язык Python:

      # Функция, возвращающая, является ли число трехзначным.
      def d3(x): return 100 <= x <= 999
      # считываем последовательность из файла
      nums = [int(x) for x in open('17_2024.txt')]
      # ищем максимальное значение, оканчивающееся на 13
      max13 = max(x for x in nums if x % 100 == 13)
      # создаем список для сумм
      s = []
      # переберем все тройки
      for a, b, c in zip(nums, nums[1:], nums[2:]):
       if d3(a) + d3(b) + d3(c) == 2 and a+b+c <= max13:
         s.append(a+b+c)
      # вывод 
      print(len(s), max(sm))

    18.
    18 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Задание выполняется с использованием прилагаемых файлов

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

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

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

    Ответ: 2167 | 718

    19.
    19 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

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

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

    Ответ: 64


    20.
    20 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

  • Петя не может выиграть за один ход;
  • Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
  • Найденные значения запишите в ответе в порядке возрастания.

    Ответ: 32 | 63


    21.
    21 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

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

    Ответ: 62


    22.
    22 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Задание выполняется с использованием прилагаемых файлов

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

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

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

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

    Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

    Ответ: 7


    23.
    23 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Исполнитель преобразует число на экране.
    У исполнителя есть две команды, которые обозначены латинскими буквами:
    А. Прибавить 1
    B. Умножить на 2
    C. Возвести в квадрат

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

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

    Например, для программы CBA при исходном числе 4 траектория будет состоять из чисел 16, 32, 33.

    Ответ: 37
    ✍ Решение:

    • Напишем программу, реализующую алгоритм поиска результата, вычисления по рекуррентным формулам организуем с помощью рекурсии.
    • Рекурсивная функция, которая возвращает количество программ для преобразования числа start в число x:
    • PascalAbc:

      function f(start, x: integer): integer;
      begin
        var k: integer;
        if (start > x)or (start=11) then result := 0
        else if start = x then result := 1
        else begin // обязательные операторные скобки
          k := k + f(start + 1, x) + f(start *2, x)+ f(start *start, x);
          result := k;
        end;
      end;
       
      begin
        writeln(f(2, 20));
      end.

      Python:

      def f(a, b):
       if a == b:
         return 1
       if a > b or a == 11:
         return 0
       return f(a+1, b) + f(a*2, b) + f(a**2, b)
      print(f(2, 20))

    Ответ: 37


    24.
    24 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Задание выполняется с использованием прилагаемых файлов

    Текстовый файл состоит из символов T, U, V, W, X, Y и Z.
    Определите в прилагаемом файле максимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ T встречается ровно 100 раз.

    Для выполнения этого задания следует написать программу.

    Ответ: 133

    ✍ Решение:

      Паскаль:

      1
      
       

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
      s = open('24_2024.txt').readline()
      # сохраняем только длины подстрок
      w_len = [len(x) for x in s.split('T')]
      # если количество слов меньше 101, таких строк нет
      if len(w_len) < 101:
        print(0)
      else:
        # используя срез, можно не делать проверку на кол-во слов, меньшее 101
        len101 = [sum(w_len[i:i+101])
           for i in range(len(w_len))]
        print(max(len101) + 100)

    25.
    25 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

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

  • символ «?» означает ровно одну произвольную цифру;
  • символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
  • Например, маске 123*4?5 соответствуют числа 123405 и 12300405.

    Среди натуральных чисел, не превышающих 1010, найдите все числа, соответствующие маске 1?2157*4, делящиеся на 2024 без остатка.
    В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 2024.
    Количество строк в таблице для ответа избыточно.

    ...  ...
    ...  ...
    ...  ...

    Ответ:

    142157664 70236
    1021575544 504731
    1121571264 554136
    1221577104 603546
    1321572824 652951
    1421578664 702361
    1521574384 751766
    1621570104 801171
    1721575944 850581
    1821571664 899986
    1921577504 949396 
    

    🎦 Программное решение (PascalAbc.Net): YouTube и RuTube

    ✍ Решение:

    ✎ Программное решение:

      Язык pascalABC.NET (классический):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      begin
        var x: biginteger;
        x := 2024;
        while x <= 10000000000 do
        begin
          if(x.ToString[1] = '1') and (x.ToString[3] = '2') and
            (x.ToString[4] = '1') and (x.ToString[5] = '5') and
            (x.ToString[6] = '7') and (x mod 10 = 4) then
            println(x, x / 2024);
          x += 2024;
        end;
      end.
      Python Решение 1 (работа с числами):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      # если на месте * пусто:
      for n in range(10):
       x = 1021574 + n*10**5
       if x % 2024 == 0:
         print(x, x // 2024)
      # если на месте * цифры от 1 до 3
      for p in range(1, 4):
       for a in range(10):
         for b in range(10**p):
           x = 102157* 10**(p+1) + 4 + a*10**(p+5) + b*10
           if x % 2024 == 0:
             print(x, x // 2024)

      Python Решение 2 (с библиотекой itertools):

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      from itertools import product
      # если на месте * пусто:
      for a in range(10):
        x = int(f'1{a}21574')
        if x % 2024 == 0:
          print(x, x // 2024)
      # если на месте * цифры от 1 до 3
      for pw in range(1, 4):
       for a in range(10):
         for b in product('0123456789', repeat=pw):
           x = int(f'1{a}2157{"".join(b)}4')
           if x % 2024 == 0:
              print(x, x // 2024)
      С++:

      1
      
       

    26.
    26 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    Задание выполняется с использованием прилагаемых файлов

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

    Входные данные
    В первой строке входного файла находится натуральное число N (N ≤ 1000) – количество заявок на проведение мероприятий. Следующие N строк содержат пары чисел, обозначающих время начала и время окончания мероприятий. Каждое из чисел натуральное, не превосходящее 1440.

    Запишите в ответе два числа: максимальное количество мероприятий и самый длинный перерыв между двумя последними мероприятиями (в минутах).

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

    5
    10 150
    100 120
    131 170
    150 180
    120 130

    При таких исходных данных можно провести максимум три мероприятия, например, мероприятия по заявкам 2, 3 и 5. Максимальный перерыв между двумя последними мероприятиями составит 20 мин., если состоятся мероприятия по заявкам 2, 4 и 5.

    Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

    Ответ: 32 | 15

    ✍ Решение:

      ✎ Решение с использованием программирования:

      PascalABC.net:

      1
      
       
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      
      # считываем данные из файла
      with open('26_2024.txt') as f:
        n = int(f.readline())
        events = []
        for _ in range(n):
          s, fn = map(int, f.readline().split())
          events.append([s, fn])
      events.sort(key=lambda x: x[1])
      # добавляем в список мероприятий
      res = [events[0][1]]
      for s, fn in events:
        if s >= res[-1][0]:
           res.append(fn)
      # начало самого позднего мероприятия
      mx_s = max(events)[0]
      # разница: разность между окончанием предпоследнего и началом самого позднего мероприятия
      print(len(res), mx_s – res[-2])
      С++:

      1
      
       


    27.
    27 задание. Демоверсия варианта ЕГЭ по информатике 2024, ФИПИ:

    A
    B
    Задание выполняется с использованием прилагаемых файлов

    По каналу связи передаётся последовательность целых чисел – показания прибора. В течение N мин. (N – натуральное число) прибор ежеминутно регистрирует значение напряжения (в условных единицах) в электрической сети и передаёт его на сервер.
    Определите три таких переданных числа, чтобы между моментами передачи любых двух из них прошло не менее K мин., а сумма этих трёх чисел была максимально возможной. Запишите в ответе найденную сумму.

    Входные данные
    Даны два входных файла (файл A и файл B), каждый из которых в первой строке содержит натуральное число Kминимальное количество минут, которое должно пройти между моментами передачи показаний, а во второй – количество переданных показаний N (1 ≤ N ≤ 10 000 000, N > K).
    В каждой из следующих N строк находится одно целое число, по модулю не превышающее 10 000 000, которое обозначает значение напряжения в соответствующую минуту.

    Запишите в ответе два числа: сначала значение искомой величины для файла А, затем – для файла B.

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

    2
    6
    150
    –150
    20
    –200
    –300
    0
    

    При таких исходных данных искомая величина равна 170 – это сумма значений, зафиксированных на первой, третьей и шестой минутах измерений (150 + 20 + 0).

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

    Ответ: 189536 | 17210

    ✍ Решение:

      Решение для файла А (27-75a.txt), полный перебор:

      PascalABC.net:

      1
      
       
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
      with open('27_A_2024.txt') as f:
        k = int(f.readline())
        n = int(f.readline())
        nums = [int(f.readline()) for _ in range(n)]
      mx = float('-inf')
      for i in range(n):
        for j in range(i+k, n):
          for m in range(j+k, n):
             mx = max(mx, nums[i] + nums[j] + nums[m])
      print(mx)
      С++:

      1
      
       

      Решение для файла B:

      PascalABC.net:

      1
      
       
      Python Решение 1:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
      with open('27_B_2024.txt') as f:
        k = int(f.readline())
        n = int(f.readline())
        nums = [int(f.readline()) for _ in range(n)]
      lft = lft_sm = res_sm = float('-inf')
      for i in range(2*k, n):
        lft = max(lft, nums[i-2*k])
        lft_sm = max(lft_sm, lft + nums[i-k])
        res_sm = max(res_sm, lft_sm + nums[i])
      print(res_sm)
      Python Решение 2:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      with open('27_B_2024.txt') as f:
        k = int(f.readline())
        n = int(f.readline())
        nums = [int(f.readline()) for _ in range(n)]
      sm = [float('-inf')]*3 + [0]
      for i in range(2*k, n):
        for j in range(2, -1, -1):
          sm[j] = max(sm[j], sm[j+1] + nums[i-j*k])
      print(sm[0])


     
    ЕГЭ по информатике -> демоверсия ЕГЭ 2024