СВЕТ: СПАСИБО
01-12-2023
Читать статью
Калужский Александр: Задача про Цаплю: https://www.youtube.co..
24-11-2023
Сергей: спасибо большое
Эта статья посвящена задачам из реального экзамена ЕГЭ по информатике 2022, которые были в этом году.
Посмотрим на сколько новый видеокурс по подготовке к ЕГЭ по информатике покрывает задачи из реального экзамена, а так же соответсвует последним веяньям моды.
Все задачи взяты с сайта: https://kompege.ru/variant?kim=25012688
На рисунке схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о протяжённости каждой из этих дорог (в километрах).
Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Определите, какова сумма протяжённостей дорог из пункта A в пункт D и из пункта G в пункта С. В ответе запишите целое число.
Легко найти пункты G и С. Это две двойные точки и они связаны друг с другом. Получаем номера 4 и 5 (Здесь порядок может быть наооборот). Значит, мы знаем расстояние между G и С, оно равно 53.
Найдём точку В, она тройная и связана с тремя тройными точками. Это точка 2. От этой точки пойдём и найдём две тройные, связанные между собой. Это точки 6 и 7. Значит, это буквы A и Б (порядок может быть другим). Посмотрим, кто из них связан с точкой 4 или 5. Это точка 6. Значит точка 6 - это F. Точка 7 - это A. Седьмая точка связана с двойной точкой D. Точка D получается 1. Расстояние между семёркой и единицей равно 13.
Ответ получается 53 + 13 = 66.
Миша заполнял таблицу истинности логической функции F
Определите, какому столбцу таблицы соответствует каждая из переменных w, x, y, z. В ответе напишите буквы w, x, y, z в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.) Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Функция F задана выражением ¬x \/ y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.
В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать: yx.
Напишем шаблон, о котором было рассказано в видеокурсе по подготовке к ЕГЭ по информатике.
print('x', 'y', 'z', 'w') for x in range(0, 2): for y in range(0, 2): for w in range(0, 2): for z in range(0, 2): if not( not((not(w) or z)) or (not(x) or y) or not(x) ): print(x, y, z, w)
Получается такая таблица истинности:
Каждый столбец имеет хотя бы один ноль, кроме последнего, поэтому последний столбец уходит переменной x, там все единицы.
Тогда все нули идут в предпоследний столбец, там будет переменная y.
У нас есть срочка с тремя нулями и одной единицей. Это может быть только последняя строчка, т.к. в первых двух строчках уже по две единицы. Значит, в первом столбце в последней ячейке ставим ноль. Получается w идёт в первый столбец, а переменная z во второй.
В файле приведён фрагмент базы данных «Продукты» о поставках товаров в магазины районов города. База данных состоит из трёх таблиц.
Таблица «Движение товаров» содержит записи о поставках товаров в магазины в течение первой декады июня 2021 г., а также информацию о проданных товарах. Поле Тип операции содержит значение Поступление или Продажа, а в соответствующее поле Количество упаковок, шт. занесена информация о том, сколько упаковок товара поступило в магазин или было продано в течение дня. Заголовок таблицы имеет следующий вид.
Таблица «Товар» содержит информацию об основных характеристиках каждого товара. Заголовок таблицы имеет следующий вид.
Таблица «Магазин» содержит информацию о местонахождении магазинов. Заголовок таблицы имеет следующий вид.
На рисунке приведена схема указанной базы данных.
Используя информацию из приведённой базы данных, опредилите, на сколько увеличилось количество упаковок всех видов макарон производителя "Макаронная фабрика", имеющихся в наличии в магазинах Первомайского района, за период с 1 по 8 июня включительно.
В ответе запишите только число.
Найдём артикулы всех макаронных изделий "Макаронной фабрики".
Открываем вкладку "Товар", кликаем в ячейку F1, выбираем кнопку на вкалдке "Главная" -> Сортировка и фильтр -> Фильтр.
Кнопка Фильтр может находится и на главной панели. Теперь можно отфильтровать товары только "Макаронной фабрики".
Получаются номера артикулов: 24, 25, 26, 27.
Аналогично отфильтровываем магазины Первомайского района. Получаются номера ID: M2, M4, M7, M8, M12, M13, M16.
После этого, переходим на вкладку "Движение товаров". Так же включаем фильтры и оставляем только нужные артиклы макаронных изделий и нужные ID магазинов.
Если мы ещё отфильтруем товары по типу "поступления", мы узнаем сколько макаронных изделий пришло в нужные нам магазины. После фильтрации остаётся только первое июня, значит, про дату пока не нужно думать.
Выделяем ячейки столбца Количество упаковок и внизу смотрим сумму этих ячеек. Получается 4970 упаковок.
Здесь нельзя пользоваться стандартной функцией СУММ, потому что она суммируем ещё и скрытые ячейки. А так мы получаем сумму выделенных ячеек.
Аналогично находим, сколько товаров было продано. В столбце "Тип операции" отфильтровываем по типу "Продажа".
Дата опять осталась только одна (1 июня). Получается, продали 3360 упаковок.
Следовательно, увеличилось на 4970 - 3360 = 1610 упаковок всех макаронных изделий в указанных магазинах за период с 1 по 8 июня включительно.
По каналу связи передаются сообщения, содержащие только буквы из набора: А, З, К, Н, Ч. Для передачи используется двоичный код, удовлетворяющий условию Фано. Это условие обеспечивает возможность однозначной расшифровки закодированных сообщений. Кодовые слова для некоторых букв известны: Н - 1111, З - 110. Для трёх оставшихся букв А, К и Ч кодовые слова неизвестны. Какое количество двоичных знаков постребуется для кодирования слова КАЗАЧКА, если известно, что оно закодировано минимально возможным количеством двоичных знаков.
Расположим уже известные буквы на дереве Фано.
У нас остались три свободных места, если не продливать дерево: 0, 10, 1110.
Буква А встречается в слове КАЗАЧКА аж 3 раза. Значит, букве А присвоим код 0. Буква К встречается один раз, значит, ей код присвоим чуть побольше 10. Букве Ч достаётся код 1110. Это самый оптимальный способ распределить коды между оставшимися буквами.
Всего минимальная длина закодированного слова будет: 2 (К) + 1 (А) + 3 (З) + 1 (А) + 4 (Ч) + 2 (К) + 1 (А) = 14.
На вход алгоритма подаётся натуральное число N.
Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
a) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;
б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 610 = 1102 результатом является число 10002 = 810, а для исходного числа 410 = 1002 результатом является число 11012 = 1310. Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, не меньшее, чем 16.
В ответе запишите это число в десятичной системе счисления.
for n in range(1, 1000): s=format(n, 'b') if s.count('1')%2==0: s = s + '0' s = '10' + s[2:] else: s = s + '1' s = '11' + s[2:] r=int(s, 2) if r>=16: print(n)
Здесь мы пишем программу, как было написано в уроке видеокурса ЕГЭ по информатике. Но, действительно, встречается и новый приём. Нужно изменить левые символы нашей строки s. Это можно сделать с помощью такой конструкции s[2:]. Таким образом, мы берём всю строку, кроме двух первых символов. Например, s='football', то s[2:] будет обозначать 'otball'.
Повторим основные идеи такого подхода при решении пятого задания из ЕГЭ по информатике с помощью программирования. Перебираем числа от 1 до 999 с помощью цикла for. В этом диапазоне надеямся найти наш ответ. С помощью команды format() превращаем число в строку уже в двоичной системе. Сумма цифр в строке зависит только от количества единиц. Нули ничего не дают в сумму. Поэтому применяем функцию .count. Дальше всё делаем, как написано в условии задачи. Команда int(s, 2) превращает строку в двоичной системе в число опять в десятичной системе счисления.
Определите, при каком наименьшем введённом значении переменной s программа выведет число 8. Для Вашего удобства программа представлена на четырёх языках.
*На данном сайте программа будет приведена на двух языках.
Решать будем привычным способом - перебором. Здесь не нужно задействовать дополнительных особенных приёмов.
for i in range(-1000, 1000): s=i s = (s - 21) // 10 n = 1 while s>= 0: n = n * 2 s = s - n if n==8: print(i)
Для хранения сжатого произвольного растрового изображения размером 640 на 256 пикселей отведено 170 Кб памяти без учёта размера заголовка файла. Файл оригинального изображения больше сжатого на 35%. Для кодирования цвета каждого пикселя используется одинаковое количество бит, коды пикселей записываются в файл один за другим без промежутков. Какое максимальное количество цветов можно использовать в изображении ?
Пусть i - это количество бит в одном пикселе. Тогда i * 640 * 256 = 170Кб * 1,35. Находим i.
Здесь округляем в меньшую сторону, потому что, если округлим в большую сторону не уместимся в 170 кб. Далее действуем по формуле:
Определите количество пятизначных чисел, записанных в восьмеричной системе счисления, в записи которых ровно одна цифра 6, при этом никакая нечётная цифра не стоит рядом с цифрой 6.
Решим с помощью программы. Об этом мы говорили в видеокурсе ЕГЭ по информатике.
k=0 for x1 in '1234567': for x2 in '01234567': for x3 in '01234567': for x4 in '01234567': for x5 in '01234567': s = x1 + x2 + x3 + x4 + x5 if s.count('6')==1: if s.count('16')==0 and s.count('61')==0 and s.count('36')==0 and s.count('63')==0 and s.count('56')==0 and s.count('65')==0 and s.count('76')==0 and s.count('67')==0: k=k+1 print(k)
Откройте файл электронной таблицы, содержащей в каждой строке четыре натуральных числа.
Определите количество строк таблицы, содержащих числа, для которых выполнены два условия:
— наибольшее из четырёх чисел меньше суммы трёх других;
— четыре числа можно разбить на две пары чисел с равными суммами.
В столбцах E, F, G, H мы хотим видеть отсортированные числа из нашей строки. Для этого воспользуемся функцией НАИМЕНЬШИЙ().
В ячейку E1 напишем формулу =НАИМЕНЬШИЙ(A1:D1; 1). В начале пишем диапазон, где мы рассматриваем числа, второй аргумент говорит, что мы хотим выбрать самый маленький элемент. Для ячейки F1 пишем =НАИМЕНЬШИЙ(A1:D1; 2). Т.e. выбираем второй по минимальности элемент. И так далее делаем для четырёх чисел.
Распространяем новые столбцы на всё пространство (как это делать, можете посмотреть в видеоуроке по 9 заданию в видеокурсе). Так же можно подсветить каким-нибудь цветом новые столбцы.
Здесь достаточно проверить одну комбинацию: максимальное число + минимальное число = сумма двух средних чисел. По другому нельзя получить одинаковые суммы пар чисел, если все числа не одинаковые в четвёрке. Но у нас нет такой строчки, где все четыре числа одинаковых (это можно отдельно проверить с помощью команды ЕСЛИ).
В столбце I расставим единицы напротив тех строчек, которые подходят под условие задачи, иначе, поставим 0. В ячейке I1 напишем формулу:
Затем распространяем эту формулу на весь столбец и подсчитаем количество единиц в этом столбце.
Получается 104 строчки.
Текст произведения Льва Николаевича Толстого "Севастопольские рассказы" представлен в виде файлов различных форматов. Откройте один из файлов и определите, сколько раз встречается в тексте отдельное слово "солдаты" со строчной буквы. Другие формы этого слова учитывать не следует. В ответе запишите только число.
Открываем соответствующий файл в программе Word. На вкладке "Главная" находится кнопка "Найти". Кликаем по чёрному треугольнику возле этой кнопки и выбираем "Расширенный поиск".
На вкладке "Главная" находится кнопка "Найти". Кликаем по чёрному треугольнику возле этой кнопки и выбираем "Расширенный поиск".
Далее, нажимаем кнопку "Больше>>".
Теперь у нас есть все инструменты, чтобы решить 10 задание из ЕГЭ по информатике 2022.
В поле "Найти" пишем наше слово "солдаты". Галочку "Учитывать регистр" ставим, т.к. слово может быть только с маленькой буквы. Ставим галочку "Только слово целом".
Нажимаем Найти в -> "Основной документ".
Получаем ответ 1.
При регистрации в компьютерной системе каждому объекту присваиватся идентификатор, состоящий из 252 символов и содержащий только десятичные цифры и символы из 1700-символьного специального алфавита. В базе данных для хранения каждого индетификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит.
Определите объём памяти (в Кбайт), необходимый для хранения 4096 идентификаторов. В ответе запишите только целое число - количество Кбайт.
Воспользуемся формулой для 11-ого задания из ЕГЭ по информатике.
Вместо N подставляем число 1700 + 10 = 1710 (1700 символов плюс 10 цифр). Тогда
Т.е. 11 бит точно хватит, чтобы закодировать 1710 символов.
В идентификатор всего 252 ячейки. Найдём сколько будет "весить" один идетификатор: 252 * 11 = 2772 бит. Узнаем, сколько байт потребуется для одного идентификатора 2772 / 8 = 347 байт (округлили в большую сторону, чтобы точно хватило).
У нас всего 4096 идентификаторов. Тогда нам потребуется 4096 * 347 = 1421312 байт. Переведём в Кб: 1421312 / 1024 = 1388 Кб.
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды
заменить (111, 27)
преобразует строку 05111150 в строку 0527150.
заменить (v, w) не меняет эту строку.
Б) нашлось (v).
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие последовательность команд КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 96 идущих подряд цифр 9? В ответе запишите полученную строку.
НАЧАЛО ПОКА нашлось(22222) ИЛИ нашлось(9999) ЕСЛИ нашлось(22222) ТО заменить(22222, 99) ИНАЧЕ заменить(9999, 2) КОНЕЦ ЕСЛИ КОЕНЦ ПОКА КОНЕЦ
Решать будем, как было показано в видеокурсе.
s='9'*96 while '22222' in s or '9999' in s: if '22222' in s: s = s.replace('22222', '99', 1) else: s = s.replace('9999', '2', 1) print(s)
На рисунке представлена схема дороог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, Л. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
Определите количество различных путей ненулевой длины, которые начинаются и заканчиваются в городе Е, не содержат этот город в качестве промежуточного пункта и проходят через промежуточные города не более одного раза.
Решать будем примерно так же, как и классическую задачу. Основные идеи ни чем не отличаются.
В город Е входят города с числами: 16, 2 и 3. Значит, ответ получается 16 + 2 + 3 = 21.
Значение арифметического выражения
Решаем классическим способом с помощью программирования.
f=4*625**1920 + 4*125**1930 - 4*25**1940 - 3*5**1950 - 1960 s='' while f>0: s = s + str(f%5) f = f // 5 print(s.count('0'))
Обозначим через ДЕЛ(n, m) утверждение "натуральное число n делится без остатка на натуральное число m". Для какого наименьшего натурального числа А формула
Применим шаблон из видокурса ЕГЭ по информатике.
def D(n, m): if n%m==0: return True else: return False for A in range(1, 1000): k=0 for x in range(1, 10000): if (not(D(x, 2)) or not(D(x, 3))) or (x + A >= 80): k=k+1 if k==9999: print(A)
Здесь в начале пишем функцию D, которая олицетворяет функцию ДЕЛ. Потом перебираем различные натуральные значения A. Если функция для какого-то значения сработает 9999 раз, то будем считать, что такое значение A нам подходит.
Самое маленькое значение получается 74.
Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:
Здесь достаточно просто запрограммировать этот алгоритм.
def F(n): if n<3: return 1 if n>2 and n%2==0: return F(n-1) + n - 1 if n>2 and n%2!=0: return F(n-2) + 2*n - 2 print(F(34))
В файле содержится последовательность натуральных чисел. Элементы последовательности могут принимать целые значения от 1 до 100 000 включительно. Определите количество пар последовательности, в которых остаток от деления хотя бы одного из элементов на 117 равен минимальному элементу последовательности. В ответе запишите количество найденных пар, затем максимальную из сумм элементов таких пар. В данной задаче под парой подразумивается два идущих подряд элемента последовательности.
В начале найдём самый маленький элемент последовательности.
f=open('17.txt') mn=10**9 for s in f.readlines(): x = int(s) mn=min(mn, x) print(mn)
Получается минимальное число равно 8.
f=open('17.txt') k=0 mx=0 n1=int(f.readline()) for s in f.readlines(): n2=int(s) if n1%117==8 or n2%117==8: k=k+1 mx = max(mx, n1+n2) n1=n2 print(k, mx)
Квадрат разлинован на N × N клеток (1 < N < 30). Исполнитель Робот может перемещаться по клеткам, выполняя за одно перемещение одну из двух команд: вправо или вниз. По команде вправо Робот перемещается в соседнюю правую клетку, по команде вниз – в соседнюю нижнюю. Квадрат ограничен внешними стенами. Между соседними клетками квадрата также могут быть внутренние стены. Сквозь стену Робот пройти не может. Перед каждым запуском Робота в каждой клетке квадрата лежит монета достоинством от 1 до 100. Посетив клетку, Робот забирает монету с собой; это также относится к начальной и конечной клеткам маршрута Робота. Определите максимальную и минимальную денежные суммы, которые может собрать Робот, пройдя из левой верхней клетки в правую нижнюю. В ответе укажите два числа – сначала максимальную сумму, затем минимальную.
Исходные данные представляют собой электронную таблицу размером N × N, каждая ячейка которой соответствует клетке квадрата. Внутренние и внешние стены обозначены утолщенными линиями.
Пример входных данных:
Для указанных входных данных ответом должна быть пара чисел
Открываем файл в программе Excel.
Выделим все ячейки с числами, нажмём "вырезать", используя контекстное меню. Вставим данные на 1 столбец вправо. Это делаем потому, что будем использовать для решения формулу, которая будет обращаться к ячейке слева.
Мысленно представим пространство на 1 строчку ниже, чем область, где находятся числа. Это пространство будет таким же по размерам, как и область с числами. В этом пространстве и будет наше решение.
Отметим особым цветом те ячейки, которые "спрятаны" от движения Робота стенками.
Для этих ячеек будем составлять другие формулы, в отличии от обычных ячеек.
Цвет ячейки можно поменять, нажав на кнопку "Цвет заливки" на главной вкладке программы.
Т.к. Робот направляется из левой верхней ячейки, то мы сначала и напишем формулу для этой ячейки. Пишем для ячейки B22:
Робот в любую ячейку может прийти либо сверху, либо слева. Для подсчёта максимального количества монет, мы должны выбрать максимальное предыдущее значение. Это и делаем формула. Плюс Робот должен взять монеты с текущей клетки.
Распространим формулу на всё пространство, не трогая закрашенные клетки.
Получается такая картина:
В ячейки для первой закрашенной области, Робот может попасть только сверху! Поэтому пишем формулу для ячейки H25:
Распространяем формулу по всему закрашенному столбцу.
В ячейки для второй закрашенной области, Робот может попасть только слева! Поэтому пишем формулу для ячейки М39:
Распространяем формулу по всей закрашенной строчке.
В ячейке U23 напишем формулу:
И тоже распространим формулу на закрашенную часть.
В правом нижнем углу нашего рабочего пространства получается максимальное количество монет, которое может собрать Робот. В ячейке U41 получается число 2628.
Чтобы получить минимальную возможную сумму, в главной формуле функцию МАКС нужно заменить на МИН!
Удобно воспользоваться автоматической заменой через Ctrl+F.
Минимальная сумма равна 1659.