Главная страница
Навигация по странице:

  • Вперёд n

  • Огэ. Разбор демоверсии 2023 (Разбор демоверсии 2023 (t mekaspersky ege)


    Скачать 3.45 Mb.
    НазваниеРазбор демоверсии 2023 (Разбор демоверсии 2023 (t mekaspersky ege)
    Дата14.03.2023
    Размер3.45 Mb.
    Формат файлаpdf
    Имя файлаrazbor-demoversii-2023-ot-Kasa.pdf
    ТипДокументы
    #988819
    Разбор демо-версии 2023 (Разбор демо-версии 2023 (t.me/kaspersky_ege)
    №1 На рисунке схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о протяжённости каждой из этих дорог (в километрах).
    Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова сумма протяжённостей дорог из пункта D в пункт B и из пункта F в пункт Ответ 58
    Пояснения:
    Начнем решение задачи с того, что распишем на графе для каждой вершины ее степень(количество соседних вершин. На картинке они написаны фиолетовым.
    Далее будем ставить в соответствие вершины и пункты в таблице. Заметим, что имеется единственная вершина степени 2 – вершина В, которая соединена только с вершинами степени 3. Найдём пункт в таблице, соответствующий этой вершине, это пункт 4.
    2. Далее сразу отметим, что два возможных пункта для F/D это 2 и 7, исходя из того, что это соседи вершины В
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    2 3. Заметим, что вершина А степени 3 соединена только с вершинами степени 3. Найдём соответствующий пункт в таблице, это пункт 5.
    4. Вершина А соединена с F, ноне соединена с D, соответственно возвращаемся к пи получаем, что пункту 2 соответствует вершина F, а пункту 7 вершина D.
    5. Вершина F соединена с вершиной C степени 2, по таблице получаем, что пункту 1 соответствует вершина C.
    6. Оставшийся пункт 3 соответсвует вершине степени 2 — G, и пункт 6 соответствует вершине степени 3 — Дорога изв, а дорога изв. Сумма 58
    №2 Миша заполнял таблицу истинности логической функции F
    ¬(y → x) \/ (z → w) \/ но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
    Пример. Функция F задана выражением ¬x \/ y,
    зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.
    В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать Ответ Пояснения y z w F") for x in range(2): for y in range(2): for z in range(2): for w in range(2): if (not(y <= x) or (z <= w) or not z) ==0: print(x,y,z,w, 0) Получаем следующую таблицу истинности
    Разбор демо-версии 2023 (Строку стремя единицами можно соотнести только с последней строкой таблице, поэтому последняя переменная - w. Столбец второй с двумя единицами и одним нулям подходит только под переменную х. Первый столбец тогда будет составлять переменную у, а третий z. Получаем ответ yxzw.
    №3 В файле приведён фрагмент базы данных Продукты о поставках товаров в магазины районов города. База данных состоит из трёх таблиц.
    Таблица Движение товаров содержит записи о поставках товаров в магазины в течение первой декады июня 2021 га также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок внесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Заголовок таблицы имеет следующий вид.
    Таблица Товар содержит информацию об основных характеристиках каждого товара. Заголовок таблицы имеет следующий вид.
    Таблица Магазин содержит информацию о местонахождении магазинов. Заголовок таблицы имеет следующий вид.
    На рисунке приведена схема указанной базы данных
    Разбор демо-версии 2023 (Используя информацию из приведённой базы данных, определите общий вес (в кг) крахмала картофельного, поступившего в магазины Заречного района за период с 1 по 8 июня включительно. В ответе запишите только число.
    Ответ: Пояснения. Нужно создать фильтр. Кликаем на любую ячейку шапки, далее переходим к созданию фильтра
    2. 1) жмем на значок сортировки в ячейке "Тип операции"
    2) Сбрасываем галочки со всех номеров
    3) Отмечаем галочкой Поступление
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    5 3. С помощью ctrl+f на листе Товар находим Крахмал картофельный и запоминаем его артикул 42 и то, что водной упаковке 0,5 кг. С помощью ctrl+f на листе Магазин находим ID магазинов Заречного района ММ, М. Аналогично 2 пункту делаем фильтр на листе Движение товаров по Артикулу и ID Магазина. Получаем 4 строчки, суммируем количество упаковок(обязательно не диапазоном, а отдельно) и незабываем умножить эту сумму на 0,5, так как водной упаковке 0,5 кг
    Разбор демо-версии 2023 (Получаем ответ 355
    №4 По каналу связи передаются сообщения, содержащие только буквы из набора АЗ, КН, Ч. Для передачи используется двоичный код, удовлетворяющий прямому условию Фано, согласно которому никакое кодовое слово не является началом другого кодового слова. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны Н – 1111, З – 110. Для трёх оставшихся букв А, К и Ч кодовые слова неизвестны. Какое количество двоичных знаков потребуется для кодирования слова КАЗАЧКА, если известно, что оно закодировано минимально возможным количеством двоичных знаков?
    Ответ: Пояснения На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
    1. Строится двоичная запись числа N.
    2. Далее эта запись обрабатывается последующему правилу:
    а) если сумма цифр в двоичной записи числа чётная, ток этой записи справа дописывается 0, а затем два левых разряда заменяются наб) если сумма цифр в двоичной записи числа нечётная, ток этой записи справа описывается 1, а затем два левых разряда заменяются на Полученная таким образом запись является двоичной записью искомого числа R. Например, для исходного числа результатом является число
    6 =
    10 110 2
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    7
    , а для исходного числа результатом является число Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 40. В ответе запишите это число в десятичной системе счисления.
    Ответ: 16
    Пояснения:
    Найдем изначальное N, т.к.
    , то изначальное N равняется
    , нужно рассмотреть вариант с нечетной суммой цифр
    -> при переводе в 10сс получим
    , подходит
    , это ответ, потому что брать меньше мы не можем из за невозможности получить число большее 40, а больше смысла нет, нужно минимальное Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится вначале координате голова направлена вдоль положительного направления оси ординат, хвост опущен. Приопущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды
    Вперёд n (где n – целое число, вызывающая передвижение Черепахи на n единиц в том направлении, куда указываете голова, и Направо m
    (где m – целое число, вызывающая изменение направления движения на m градусов почасовой стрелке.
    Запись Повтори k Команда Команда ... Команда означает, что последовательность из S команд повторится k раз.
    Черепахе был дан для исполнения следующий алгоритм Повтори 7 [Вперёд 10 Направо 120].
    Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует.
    Ответ: 38
    Пояснения:
    Как заявил ФИПИ 6 задания направлены на анализ алгоритмов:
    Задание 6 в 2023 году будет посвящено анализу алгоритма для конкретного исполнителя, определению возможных результатов работы простейших алгоритмов управления исполнителями и вычислительных алгоритмов
    Так как это графический исполнитель, то достаточно просто можем смоделировать его действие с помощью библиотеки turtle:
    import turtle from turtle import * count = 0 # заводим переменную для подсчёта выполненных циклов left(90) # поворачиваем черепашку в сторону положительного направления оси ординат (OY) while count < 7: # из условия "Повтори 7" forward(10) # из условия "Вперед 10" right(120) # из условия "Направо 120" count += 1 # считаем кол-во пройденных циклов После выполнения кода выше мы получим рисунок траектории черепахи - это равносторонний треугольник =
    2 8
    10 4 =
    10 100 2
    1101 =
    2 13 10
    R
    > 40 10100 2
    10000 2
    110001 2
    49 > 40 10000 =
    2 16 10
    Разбор демо-версии 2023 (Область внутри данного треугольника ограничена 3 прямыми линиями:
    вертикальная слева задаётся уравнением прямые расположенные диагонально можно задать уравнениями вида Коэффициенты можно найти через
    , где - угол, образующийся между горизонтальной прямой и осью абсцисс Так как треугольник равносторонний - все его углы равны
    , значит верхняя и нижняя диагональные прямые образуют с осью абсцисс углы и соответственно, тангенсы этих углов равны и соответственно
    Параметр для нижней диагональной прямой равна 0, для верхней - 10, так как из условия задачи черепаха ходит на 10 единиц вперёд
    Получаем следующие формулы прямых 0
    y
    = kx + b
    k
    tgα
    α
    60°
    150° 30°

    /3 3
    /3 3
    b
    x
    = 0
    y
    = x
    /3 3
    y
    = x ∗ −
    /3 +
    3 10
    Разбор демо-версии 2023 (Идея задачи проверяем нахождение точки внутри области, ограниченной траекторией движения черепахи, по её координатам относительно х прямых, на которых лежат стороны треугольника
    Подходящие нам точки лежат правее вертикальной прямой, ниже верхней диагонали и выше нижней, а значит удовлетворяют следующим условиям 0
    y
    > x
    /3 3
    y
    < x ∗ −
    /3 +
    3 10
    Разбор демо-версии 2023 (Проверим все точки с целочисленными координатам в квадрате 10 на 10, в который помещается треугольник из задачи, для этого напишем программу math count = 0 # заводим переменную для подсчёта точек, удовлетворяющих условию for x in range(11): # перебираем x for y in range(11): # перебираем y if x > 0 and x * math.sqrt(3) / 3 < y < (10 + -1 * x * math.sqrt(3) / 3): # записываем ранее сформулированное условие count += 1 # если оно выполняется, то увеличиваем значение счётчика print(count) # выводим найденное значение Музыкальный фрагмент был записан в формате моно, оцифрован и сохранён в виде файла без использования сжатия данных. Размер полученного файла – 28 Мбайт. Затем тот же музыкальный фрагмент был записан повторно в формате стерео (двухканальная запись) и оцифрован с разрешением в 3,5 раза выше и частотой дискретизации в 2 раза меньше, чем в первый раз. Сжатие данных не производилось. Укажите размер полученного при повторной записи файла в Мбайт. В ответе запишите только целое число, единицу измерения писать не нужно.
    Ответ: 98
    Пояснения:
    Пусть в первый раз
    1*a*b*t=28мб Где разрешение, частота дискретизации, время записи Тогда во второй раз
    2*3,5*a*1/2b*t=y y-объём который мы ищем Составим и решим пропорцию y*1*a*b*t=28*2*3,5a*1/2b*t
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    11
    Всё лишнее сокращается, остаётся: 28*3,5 Ответ 98
    №8 Определите количество пятизначных чисел, записанных в восьмеричной системе счисления, в записи которых только одна цифра 6, при этом никакая нечётная цифра не стоит рядом с цифрой Ответ Пояснения перевод в 8СС def perevod(n): res = "" while n>0: res = str(n%8) + res n = n//8 return res nechet = "13579" список нечетных чисел cnt = 0 счетчик для подходящих чисел цикл по числам, которые являются 5-значными в 8СС for x in range(8**4,(8**5)-1): chislo = perevod(x)
    проверяем, что в числе только одна чифра 6, сохраняем ее индекс if chislo.count("6") == 1: ind = chislo.find("6")
    если цифра 6 первая в числе if ind == 0: if not(chislo[ind + 1] in nechet): cnt+=1
    если цифа 6 последняя в числе elif ind == len(chislo) - 1: if not(chislo[ind - 1] in nechet): cnt+=1
    если цифра 6 является ни первой, ни пеоследней в числе else: if not((chislo[ind - 1] in nechet) or (chislo[ind + 1] in nechet)): cnt+=1 print(cnt)
    №9 Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел. Определите количество строк таблицы, содержащих числа, для которых выполнены оба условия в строке только одно число повторяется дважды
    – среднее арифметическое неповторяющихся чисел строки не больше суммы повторяющихся чисел. В ответе запишите только число.
    Ответ: 2241
    Пояснения:
    Решение экселем lines = open('9.txt').readlines() # после переноса данных изв открываем этот файл и добавляем каждую строку
    # в список cnt = 0 # переменная для ответа for string in lines: # проходим по строкам check = list(map(int, string.split())) # список со ВСЕМИ 6 числами из строки line = set(map(int, string.split())) # множество уникальных элементов с уникальными числами из строки if len(line) == 5: # если в строке содержится 5 раззных чисел (те. лишь одно число встречается дважды) for x in line: # проходим по множеству с целью узнать, какое число повторяется дважды if check.count(x) == 2: # есил число повторяется дважды if ((sum(check) - 2 * x) / 4) <= x + x: # проверяем второе условие если ср. арифм неповторяющихся чисел больше суммы
    # повторяющихся cnt += 1 # увеличиваем количество подходящих строк на 1
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    12
    print(cnt) # выводим ответ Текст произведения Льва Николаевича Толстого Севастопольские рассказы представлен в виде файлов различных форматов. Откройте один из файлов и определите, сколько раз встречается в тексте отдельное слово теперь со строчной буквы. Другие формы этого слова учитывать не следует. В ответе запишите только число
    Ответ: 45
    Пояснения:
    Используем расширенный поиск, задаем следующие параметры Учитывать слово целиком, Учитывать регистр. Получаем 45 подходящих вариантов слова теперь При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 250 символов и содержащий только десятичные цифры и символы из символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковыми минимально возможным количеством бит. Определите объём памяти (в Кбайт, необходимый для хранения 65 536 идентификаторов. В ответе запишите только целое число – количество Кбайт
    Ответ: 22016
    Пояснения:
    Всего алфавит 1650+10 символов, это
    , те. на 1 символ нам нужно 11 бит. Всего 250 символов, 250*11=2750 бит, делим на 8 = 344, мы узнали сколько байт нужно на один идентификатор * 65536 / 1024 = 22016 (умножаем на количество идентификаторов и делим, чтобы получить килобайты Исполнитель Редактор получает на вход строку цифр и преобразовываете. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр. А) заменить (v, w). Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить
    (111, 27) преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку. Б) нашлось (v). Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда
    2 11
    Разбор демо-версии 2023 (возвращает логическое значение истина, в противном случае возвращает значение ложь. Строка исполнителя при этом не изменяется.
    Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. В конструкции ЕСЛИ условие ТО команда ИНАЧЕ команда КОНЕЦ ЕСЛИ выполняется команда (если условие истинно) или команда (если условие ложно. Дана программа для Редактора НАЧАЛО ПОКА нашлось (>1) ИЛИ нашлось (>2) ИЛИ нашлось (>0) ЕСЛИ нашлось (>1) ТО заменить (>1, 22>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>2) ТО заменить (>2, 2>) КОНЕЦ ЕСЛИ ЕСЛИ нашлось (>0) ТО заменить (>0, 1>) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА
    КОНЕЦ
    На вход приведённой выше программе поступает строка, начинающаяся с символа «>», а затем содержащая 39 цифр «0», n цифр «1» и 39 цифр «2», расположенных в произвольном порядке. Определите наименьшее значение n, при котором сумма числовых значений цифр строки, получившейся в результате выполнения программы, является простым числом.
    Ответ: Пояснения str_process(s): # в функцию запихиваем из условия обработку строки,
    # переписав её под питон while '>1' in s or '>2' in s or '>0' in s: if '>1' in s: s = s.replace('>1', '22>', 1) elif '>2' in s: s = s.replace('>2', '2>', 1) elif '>0' in s: s = s.replace('>0', '1>', 1) return s def isPrime(k): функция проверки на простоту числа check = True for i in range(2, int(k/2)+1): if k%i == 0: проверяем делится ли наше число на текущий делитель check = False break если мы нашли хоть один делитель - число уже непростое создам переменную, куда будем пихать сумму цифр числа for n in range(50): перебираем n в небольшом промежутке, чтоб найти наименьшее origs = '>' + 39*'0' + 39*'2' + n*'1' собираем из кусочков строку с переменным количеством n proc = str_process(origs) с помощью функции преобразуем строку proc = proc.replace('>', '', 1) убираем лишний знак '>'
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    14
    summ = sum(map(int, proc)) считаем суму цифр получившейся строки if isPrime(summ): проверяем на простоту получившеееся число print(n,summ) break если нам подошло, то дальше нет смысла смотреть На рисунке представлена схема дорог, связывающих города А, Б, В, ГДЕ, Ж, ИК, Л. По каждой дороге можно двигаться только водном направлении, указанном стрелкой. Определите количество различных путей ненулевой длины, которые начинаются и заканчиваются в городе Е, не содержат этот город в качестве промежуточного пункта и проходят через промежуточные города не более одного раза.
    Ответ: Пояснения
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    15
    №14 Операнды арифметического выражения записаны в системе счисления с основанием 15. В записи чисел переменной x обозначена неизвестная цифра из алфавита 15-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 14. Для найденного значения x вычислите частное отделения значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.
    Ответ: Пояснения x in '0123456789ABCDE': # проходимся переменной x по всем возможным цифрам в 15 СС if (int('123' + x + '5', 15) + int('1' + x + '233', 15)) % 14 == 0: # если сумма чисел в выражении кратна 14 print((int('123' + x + '5', 15) + int('1' + x + '233', 15)) // 14) # выводим ответ break # если ответ вывели, останавливаем цикл Обозначим через ДЕЛ, m) утверждение натуральное число n делится без остатка на натуральное число m». Для какого наименьшего натурального числа А формула
    123x5 +
    15 1x233 15
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    16
    (ДЕЛ, 2) → ДЕЛ, 3)) \/ (x + A ≥ 100) тождественно истинна (те. принимает значение 1) при любом натуральном значении переменной х?
    Ответ: Пояснения f(x, a): # функция от x и a return (x % 2 != 0 or x % 3 != 0) or (x + a >= 100) # возвращаем рез-тат функции a = 1 # переменная для a while True: # пока не найдём ответ if all(f(x, a) for x in range(1, 100)): # проверяем, если для какого-то A ф-я тожд. истинна при любом натур. x. Если да, то print(a) # выводим A break # останавливаем цикл while True, т.к. ответ уже найден a += 1 # если ответ не нашли, A увеличиваем на 1
    №16 Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями F(n) = 1 при n = 1;
    F(n) = n × F(n − 1), если n > 1. Чему равно значение выражения F(2023) / Ответ 8266912626
    Пояснения:
    Начнем раскрывать F(2023) по условию для n > 1:
    F(2023) / F(2020) = 2023 * F(2022) / F(2020) Видим, что с F(2022) можно проделать тоже упрощение. Начнём последовательно делать это
    2023 * 2022 * F(2021) / F(2020) = 2023 * 2022 * 2021 * F(2020) / F(2020). Сокращаем F(2020) в числителе и знаменателе и считаем 2023 * 2022 * 2021 * 1 = 8266912626
    №17 В файле содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от –10 000 до 10 000 включительно. Определите количество пар последовательности, в которых только одно число оканчивается на 3, а сумма квадратов элементов пары не меньше квадрата максимального элемента последовательности, оканчивающегося на 3. В ответе запишите два числа сначала количество найденных пар, затем максимальную из сумм квадратов элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.
    Ответ: 180 Пояснения = open('17.txt') # считываем файл a = [int(x) for x in f.readlines()] # Заносим все числа из файла в список maxi = -100000 count = 0 maxi_sum = -20000 for i in a: # проходимся по массиву и ищем максимальное число, оканчивающееся на 3 if i % 10 == 3 and i > maxi: maxi = i for i in range(len(a) - 1): if (abs(a[i]) % 10 == 3 and abs(a[i + 1]) % 10 != 3) or (abs(a[i]) % 10 != 3 and abs(a[i + 1]) % 10 == 3): # проверяем пары на услови if a[i] * a[i] + a[i + 1] * a[i + 1] >= maxi * maxi: # проверяем условие на то, что сумма квадратов элементов парне меньше maxi count += 1 # увеличиваем счетчик maxi_sum = max(maxi_sum, a[i] * a[i] + a[i + 1] * a[i + 1]) # ищем максимальную сумму квадратов элементов пар print(count, maxi_sum) # выводим ответ
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    17
    №18 Квадрат разлинован на N × N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя заодно перемещение одну из двух команд вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз – в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой это также относится к начальной и конечной клеткам маршрута Робота. Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа – сначала максимальную сумму, затем минимальную.
    Исходные данные представляют собой электронную таблицу размером N × N, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщенными линиями. Пример входных данных
    Ответ: 1099 Пояснения) Скопируем таблицу в новое место и удалим оттуда все значения, там будем искать ответ) Расставим формулы рядом со стенками. Когда робот находится справа от вертикальной стены, как на рисунке, мы понимаем, что он не мог туда прийти слева (ходом вправо, а мог только сверху. Поэтому формулы в таких ячейках будут принимать вид то, что в соответствующей ячейке исходной таблицы + то, что сверху в текущей таблице. Точно также снизу от горизонтальных стенок, где в ячейку прийти можно только слева, ноне сверху) После того как проставили формулы для всех ячеек рядом со стенками, нужно расставить основную формулу, которая будет выбирать максимальное из верхней и левой ячейки и прибавлять к нему значение из этой же ячейки исходной таблицы. Например МАКС Таким образом нужно заполнить всю оставшуюся таблицу ив правой нижней ячейке получим ответ для максимального, затем можно заменить формулу на МИН и получим ответ для минимального Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу один камень или увеличить количество камней в куче в два раза. Для того чтобы делать ходы, у каждого игрока есть неограниченное количество камней. Игра завершается в тот момент, когда количество камней в куче становится не менее 129. Победителем считается игрок, сделавший последний ход, те. первым получивший кучу из 129 или больше камней. В начальный момент в куче было S камней, 1 ≤ S ≤ 128. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника. Укажите
    Разбор демо-версии 2023 (такое значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.
    Ответ: Пояснения Заполним функцию с возможными ходами def step(p): return p+1, p*2
    # И определим значение, при котором игрок побеждает def win(p): return p >= 129
    # Создадим словарь, в котором ключом будет номер категории, а значениями в ней - соответвующие S positions = {}
    # Для начала словарь нужно заполнить нулями, чтобы потом можно было делать ходы for p in range(1,200): if not win(p): positions[p] = 0
    # В первую категорию внесем все позиции, из которых можно победить заход хотя бы один ведёт к победе positions[p] = 1
    # Во вторую категорию внесем позиции, при которых Ваня выигрывает первым ходом при любой игре Пети for p in positions: if positions[p] != 1: if all(positions[p1] == 1 for p1 in step(p)): # все ведут в 1 категорию positions[p] = 2
    # Выведем все позиции, из которых можно победить заход Выведем полученные во второй категории значения
    # Ваня выигрывает первым ходом при любой игре Пети print([p for p in positions if positions[p] == 2])
    №20 Для игры, описанной в задании 19, найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия
    – Петя не может выиграть за один ход
    – Петя может выиграть своим вторым ходом независимо оттого, как будет ходить Ваня. Найденные значения запишите в ответе в порядке возрастания.
    Ответ: 32 Пояснения Заполним и выведем ю категорию, где
    # Петя выигрывает своим вторым ходом for p in positions: if positions[p] == 0: if any(positions[p1] == 2 for p1 in step(p)): # можно подставить positions[p] = 3 print([p for p in positions if positions[p] == 3])
    №21 Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия
    – у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети
    – у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом. Если найдено несколько значений S, в ответе запишите минимальное из них
    Ответ: Пояснения
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    19
    # Заполним и выведем ю категорию, где
    # Ваня выигрывает своим вторым или первым ходом for p in positions: if positions[p] == 0: if all(positions[p1] in (1, 3) for p1 in step(p)): # можно подставить positions[p] = 4 print([p for p in positions if positions[p] == 4])
    №22 В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. Впервой строке таблицы указан идентификатор процесса
    (ID), во второй строке таблицы – время его выполнения в миллисекундах, в третьей строке перечислены с разделителем «;»
    ID процессов, от которых зависит данный процесс. Если процесс является независимым, тов таблице указано значение Типовой пример организации данных в файле:
    Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно. Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого
    файла.
    Ответ: 17
    Пояснения:
    Основной ключ к решению - понимание, как зависят данные в задании процессы друг от друга. Простыми словами, основываясь на таблице из типового примера 1 и 2 процесс не завистя от каких-либо других (это показывает 0 в третьем столбце, а значит, могут начинаться с самого начала и идти параллельно. 3 процесс зависит от
    1 и 2, то есть, он может начаться только после того, когда окончат свое выполнение и 1, и 2 вместе. Откроем файл, в нем описано всего 12 процессов, а значит, в данном случае можно найти решение вручную
    Разбор демо-версии 2023 (Для наглядности решения нанесем значения на график по оси ОУ - время в мс, оно показывает, в какой момент времени закончит свое выполнение тот или иной процесс по оси ОХ - номера выполняемых процессов(черным цетом) и номера процессов, от которых они зависят(голубым), взятые в таблице. Фиолетовые отрезки - длительность процессов.
    Пример заполнения:
    Первыми на график наносим процессы 1 и 2, они независимые, а значит, могут идти параллельно и с самого начала работы. Их длительность - 4 и 3 мс соответственно процесс может начаться только по окончании процессов 1 и 2, то есть, по истечении 4 мс сначала всей работы. Его длительность - 1 мс процесс зависит от 3 процесса, а значит, может начаться только в тот момент, когда 3 закончится, то есть, по истечении 5 мс сначала всей работы. Длительность его - 7 мс
    Аналогичным образом наносим на график отрезки, соответствуещие каждому процессу, основываясь на информации о том, от каких других процессов они зависят
    Ответ на задачу - это самая правая точка отрезков на графике, в данном задании она соответствует точке 17 по оси ОХ
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    21
    №23 Исполнитель преобразует число на экране. У исполнителя есть две команды, которым присвоены номера. Прибавить 1 2. Умножить на Программа для исполнителя – это последовательность команд. Сколько существует программ, для которых при исходном числе 1 результатом является число 35, при этом траектория вычислений содержит число 10 и не содержит 17? Траектория вычислений программы – это последовательность результатов выполнения всех команд программы. Например, для программы 121 при исходном числе 7 траектория будет состоять из чисел 8, 16, Ответ Пояснения = {1: 1} словарь значений for n in range(2, 36): f[n] = 0 f[n] += f[n - 1] команда прибавить 1 if n // 2 in f and команда умножить на 2 f[n] += f[n // 2] if n == избегаем 17 f[n] = 0 if n == содержит 10 for x in range(n): f[x] = 0 print(f[35])
    №24 Текстовый файл состоит из символов A, F, C, D и O. Определите максимальное количество идущих подряд пар символов вида
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    22
    согласная + гласная
    в прилагаемом файле. Для выполнения этого задания следует написать программу.
    Ответ: Пояснения = open('24.txt').readline() # открываем файлик
    # находим и заменяем все пары согласная + гласная на * for a in 'FCD': for b in 'AO': s = s.replace(a + b, '*') cur = 0 # заводим счётчик текущего количества идущих подряд пар maxi = 0 # заводим переменную - макимальное количество идущих подряд пар for i in range(len(s)): if s[i] == '*': # если найдена звёздочка(то есть пара, то. cur += 1 # прибавляем 1 к текущему количеству подряд идущих пар maxi = max(maxi, cur) # проверяем на максимум else: cur = 0 # если звёздочка не найдена, то обнуляем текущий счетчик print(maxi) # выводим ответ - максимум идущих подряд пар Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы cимвол «?» означает ровно одну произвольную цифру
    – символ «*» означает любую последовательность цифр произвольной длины в том числе «*» может задавать и пустую последовательность.
    Например, маске 123*4?5 соответствуют числа 123405 и 12300405. Среди натуральных чисел, не превышающих
    , найдите все числа, соответствующие маске 1?2139*4, делящиеся на 2023 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце – соответствующие им результаты деления этих чисел на 2023. Количество строк в таблице для ответа избыточно.
    Ответ: 162139404 80148 1321399324 653188 1421396214 702618 1521393104 Пояснения itertools s = '0123456789'
    # запишем число из маски 1?2139*4: x = '1'+ a + '2139' + b + '4'
    # a - 1 цифра
    # b - 0,1,2,3 цифры res = {} # сюда запишем икомые числа for a in s: for k in range(4): # кол-во цифры в b for b_tuple in itertools.product(s, repeat=k): b = ''.join(b_tuple) x = '1' + a + '2139' + b + '4' int_x = int(x) if int_x < 10 ** 10 and int_x % 2023 == 0: res[int_x] = int_x // 2023 for x in sorted(res.keys()): print(x, res[x])
    №26 В магазине для упаковки подарков есть N кубических коробок. Самой интересной считается упаковка подарка по принципу матрёшки – подарок упаковывается в одну из коробок, та в свою очередь в другую коробку и т.д. Одну коробку
    10 10
    Разбор демо-версии 2023 (можно поместить в другую, если длина её стороны хотя бы на 3 единицы меньше длины стороны другой коробки. Определите наибольшее количество коробок, которое можно использовать для упаковки одного подарка, и максимально возможную длину стороны самой маленькой коробки, где будет находиться подарок. Размер подарка позволяет поместить его в самую маленькую коробку.
    Входные данные Впервой строке входного файла находится число N – количество коробок в магазине (натуральное число, не превышающее 10 000). В следующих
    N строках находятся значения длин сторон коробок (все числа натуральные, не превышающие 10 000), каждое – в отдельной строке. Запишите в ответе два целых числа сначала наибольшее количество коробок, которое можно использовать для упаковки одного подарка, затем максимально возможную длину стороны самой маленькой коробки в таком наборе.
    Типовой пример организации данных во входном файле
    5
    43
    40
    32
    40
    30 Пример входного файла приведён для пяти коробок и случая, когда минимальная допустимая разница между длинами сторон коробок, подходящих для упаковки «матрёшкой», составляет 3 единицы. При таких исходных данных условию задачи удовлетворяют наборы коробок с длинами сторон 30, 40 и 43 или 32, 40 и 43 соответственно, те. количество коробок равно 3, а длина стороны самой маленькой коробки равна Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых
    файлов.
    Ответ: 2767 Пояснения = open('26.txt') n = int(tf.readline()) # n = кол-во коробок a = [int(tf.readline()) for i in range(n)] # размеры коробок a.sort(reverse=True) # смотрим с большей коробки maxi = a[0] # запоминаем размер наибольшей коробки count = 1 # кол-во коробок for i in range(1, n): if a[i] <= maxi - 3: count += 1 maxi = a[i] print(count, maxi)
    №27 У медицинской компании есть N пунктов приёма биоматериалов на анализ. Все пункты расположены вдоль автомагистрали и имеют номера, соответствующие расстоянию от нулевой отметки до конкретного пункта. Известно количество пробирок, которое ежедневно принимают в каждом из пунктов. Пробирки перевозят в специальных транспортировочных контейнерах вместимостью не более 36 штук. Каждый транспортировочный контейнер упаковывается в пункте приёма и вскрывается только в лаборатории.
    Стоимость перевозки биоматериалов равна произведению расстояния от пункта до лаборатории на количество контейнеров с пробирками. Общая стоимость перевозки задень равна сумме стоимостей перевозок из каждого пункта в лабораторию. Лабораторию расположили водном из пунктов приёма биоматериалов таким образом, что общая стоимость доставки биоматериалов из всех пунктов минимальна.
    Определите минимальную общую стоимость доставки биоматериалов из всех пунктов приёма в лабораторию.
    Входные данные Дано два входных файла (файл A и файл B), каждый из которых впервой строке содержит число N (1 ≤ N ≤ 10 000 000) –
    Разбор демо-версии 2023 (количество пунктов приёма биоматериалов. В каждой из следующих N строк находится два числа номер пункта и количество пробирок в этом пункте (все числа натуральные, количество пробирок в каждом пункте не превышает 1000). Пункты перечислены в порядке их расположения вдоль дороги, начиная от нулевой отметки. В ответе укажите два числа сначала значение искомой величины для файла А, затем – для файла Типовой пример организации данных во входном файле
    6
    1 100
    2 200
    5 4
    7 3
    8 2
    10 190 При таких исходных данных и вместимости транспортировочного контейнера, составляющей 96 пробирок, компании выгодно открыть лабораторию в пункте 2. В этом случае сумма транспортных затрат составит 1 · 2 + 3 · 1 + 5 · 1 +
    6 · 1 + 8 · Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых
    файлов.
    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.
    Ответ: 51063 Пояснения решение на 1 балл tf = open('27_A.txt') n = int(tf.readline()) # n = кол-во складов m = 36 # m = кол-во пробирок в сумке a = {} # номер пункта пробирок for i in range(n): x, y = map(int, tf.readline().split()) if y % m == 0: # считаем кол-во сумок вместо пробирок a[x] = y // m else: a[x] = y // m + 1 min_cena = 10 ** 20 for x in a: cena = 0 for y in a: r = abs(x - y) cena += a[y] * r min_cena = min(cena, min_cena) print(min_cena)
    # 27 на 2 балла tf = open('27_B.txt') n = int(tf.readline()) # n = кол-во складов m = 36 # m = кол-во пробирок в сумке a = {} # номер пункта пробирок forward_sum = 0 cena = 0 for i in range(n): x, y = map(int, tf.readline().split()) if y % m == 0: # считаем кол-во сумок вместо пробирок a[x] = y // m else: a[x] = y // m + 1 cena += a[x] * x # как-будто везем в начало дороги forward_sum += a[x]
    # решение на 2 балла min_cena = 10 ** 20 back_sum = 0 y = 0 # предыдущий пункт r_b = 0 # расстояние до предыдущего пункта
    Разбор демо-версии 2023 (t.me/kaspersky_ege)
    25
    r_f = 0 # расстояние до следующего for x in sorted(a.keys()): r_b = x - y cena += back_sum * r_b # предыдущие стали дороже cena -= r_b * forward_sum # следующие дешевле min_cena = min(min_cena, cena) back_sum += a[x] # предыдущих больше forward_sum -= a[x] # следующих меньше y = x print(min_cena)


    написать администратору сайта