Всё, что нужно знать о ЕГЭ по информатике
Разные вузы требуют разные вступительные экзамены по IT-направлениям. Где-то нужно сдавать физику, где-то — информатику. К какому экзамену готовиться — решать вам, но стоит иметь в виду, что конкурс на специальности, где надо сдавать физику, обычно ниже, чем на специальности, где требуется ЕГЭ по информатике, т. е. вероятность поступить «через физику» больше.
Зачем тогда сдавать ЕГЭ по информатике?
- К нему быстрее и проще подготовиться, чем к физике.
- Вы сможете выбирать из большего количества специальностей.
- Вам будет легче учиться по выбранной специальности.
Что нужно знать о ЕГЭ по информатике
ЕГЭ по информатике, или, по-другому, КЕГЭ (компьютерный ЕГЭ), проходит только с использованием компьютера. Всего 27 заданий с одним кратким ответом. 11 заданий базового уровня сложности, 11 заданий повышенного уровня и 5 заданий высокого уровня сложности. Задания с 1-го по 25-е позволяют набрать по 1 первичному баллу. Задания 26, 27 позволяют набрать по 2 первичных балла каждый. Таким образом, максимум первичных баллов, которые можно получить за решение всех заданий, — 29.
Первичные баллы переводятся в тестовые, которые и являются результатом ЕГЭ. 29 первичных баллов равны 100 тестовым баллам за экзамен. Таблица перевода первичного балла в тестовый неравномерна. Чем больше ваш итоговый балл, тем меньше будет давать и первичный: например, 2 первичных балла соответствуют 14 тестовым, начиная с нуля, а 26–28 первичных дают в итоге 93–98 баллов соответственно.
Это значит, что при выполнении ЕГЭ по информатике необходимо сделать как можно больше заданий. Начинать с самых простых, так как по тестовому весу они не будут сильно уступать сложным заданиям. Иногда выгоднее решить две простые задачи, чем решать одну сложную. Главное, решить их правильно. Так как вы часто используете различное программное обеспечение, то и ответ является результатом работы программ. Необходимо постоянно проверять на промежуточных результатах правильность работы вашего алгоритма или другой программы. Цена ошибки во время выполнения тестовых заданий выше — потеря каждого первичного балла чревата тем, что вы не пройдёте по конкурсу, ведь 3–4 итоговых балла за ЕГЭ при высокой конкуренции на IT-специальности могут стать решающими. Компьютер доступен на протяжении всего экзамена, и одно и то же задание можно решить разными способами и сравнить полученные ответы.
Как готовиться к решению задач из первой части
- Уделите особое внимание задачам № 6, 8, 9, 17, 18, 23, 24, 25, 26, 27. Именно эти задачи, согласно анализу результатов прошлых лет, особенно сложны. Трудности с решением этих задач испытывают не только те, у кого общий балл за ЕГЭ по информатике получился низким, но и хорошисты и отличники.
- Выучите наизусть таблицу степеней числа 2.
- Запомните стандартные алгоритмы на языке программирования (проверка чисел на простоту, делимость, перебор потока чисел и поиск минимума, максимума, чтение из файла, работа со строками, взятие остатка).
- Тщательно изучите варианты ЕГЭ предыдущих лет. Экзамен по информатике — один из самых стабильных, это означает, что для подготовки можно смело использовать варианты ЕГЭ за последние 2–3 года. За два года поменялись только задачи 6, 13 и 22.
- Познакомьтесь с разными вариантами формулировки заданий. Помните о том, что незначительное изменение формулировки всегда приводит к ухудшению результатов экзамена.
- Внимательно читайте условие задачи. Большинство ошибок при выполнении заданий связано с неверным пониманием условия.
- Учитесь самостоятельно проверять выполненные задания и находить ошибки в ответах.
Что нужно знать о решении сложных задач
24-я задача — на работу с символами и строками.
25-я задача требует составления программы с использованием стандартных алгоритмов.
26-я задача — на работу с большим количеством чисел из файла.
27-я задача — необходимо написать сложную и эффективную по времени программу.
Основную трудность на экзамене представляет 27-я задача. Её решает только 7% сдающих— на 1 балл и 4% — на 2 балла. Её особенность в том, что к ней невозможно подготовиться заранее. Каждый год на экзамен выносится принципиально новая задача. В задаче есть 2 файла для тестирования вашей программы. При решении задачи № 27 нельзя допустить ни одной смысловой ошибки. Но можно написать неэффективную программу и получить один первичный балл, чем сразу пытаться написать алгоритм на два балла.
Как рассчитывать время на экзамене
Ориентируйтесь на данные, которые приведены в спецификации контрольных измерительных материалов для проведения ЕГЭ по информатике. В ней указано примерное время, отведённое на выполнение заданий.
Распределить время на решение заданий можно следующим образом:
• Базовый уровень: 43 минуты.
• Повышенный уровень: 68 минут.
• Высокий уровень: 124 минуты.
Из них 43 минуты отводится на решение задач 1–10 и 19 базового уровня. В среднем на каждую задачу из первой части уходит от 3 до 6 минут. Повышенный уровень требует от 3 до 14 минут на задачу.
Остаётся 124 минуты на решение заданий высокого уровня сложности, при этом для решения последней задачи № 27 понадобится не менее 40 минут, а для № 26 — 35 минут. Эти расчёты выполнены специалистами Федерального института педагогических измерений и основаны на результатах экзаменов прошлых лет, поэтому к ним следует отнестись серьёзно и использовать в качестве ориентира на экзамене.
Языки программирования — какой выбрать
- BASIC. Это устаревший язык, и не используется в школах, и на экзамене.
- Школьный алгоритмический язык программирования «Кумир». Он разработан специально для раннего обучения программированию, удобен для освоения начальных алгоритмов, но практически не содержит глубины, в нём некуда развиваться. Но им очень удобно решать задачу 6.
- Pascal. По-прежнему является одним из самых распространённых языков программирования для обучения в школах и вузах. Pascal вполне подходит в качестве языка написания КЕГЭ, но при выполнении сложных заданий на нём может потребоваться больше времени, если не знать последних фишек языка. Смотрите последние обновления языка PascalABC.Net — самые нужные конструкции, которые пригодятся на экзамене, уже есть.
- С++. Универсальный язык, один из самых быстрых языков программирования. Его сложно изучать, зато в практическом применении его возможности очень широки.
- Python. Его легко изучать на начальном уровне, единственное, что требуется, — знание английского языка. Вместе с тем при углублённом изучении Python предоставляет программисту не меньше возможностей, чем С++. Начав изучение Python ещё в школе, вы будете использовать его и в дальнейшем, вам не придётся переучиваться на другой язык, чтобы достичь новых горизонтов в программировании. Для сдачи ЕГЭ достаточно знать Python на базовом уровне. На экзамене даёт небольшое преимущество, так как формулировки заданий очень похожи на код программы Python.
В ЕГЭ 2024 года нет заданий с разными языками программирования, так что можно использовать любой язык программирования для решений. Всё равно вы будете вписывать получившийся ответ, а на каком языке он получен — дело удобства использования инструмента.
Полезно знать
- Работы по информатике не оцениваются экспертами, все задания проверяет компьютер.
- Лучше записывать ответы в специальный бланк-черновик: если станция выйдет из строя, то вам её заменят, но на другой станции ваши ответы не сохранятся, и их придётся вводить заново.
- Полезный сайт для подготовки к ЕГЭ по информатике — сайт Константина Юрьевича Полякова.
- На сайте ФИПИ выложены кодификатор элементов содержания и требования к уровню подготовки для проведения ЕГЭ по информатике, а также спецификация контрольных измерительных материалов для проведения ЕГЭ по информатике. В этих документах можно найти перечень разделов курса информатики, знание которых проверяется на ЕГЭ, а также список необходимых для сдачи экзамена знаний и умений.
- На этом же сайте можно найти методические рекомендации для учителей с анализом результатов ЕГЭ разных лет и обучающие материалы для экспертов ЕГЭ по информатике с критериями оценивания задач.
- Готовиться к ЕГЭ по информатике можно вместе с «Фоксфордом». Все курсы по информатике — на одной странице.
ЕГЭ по информатике — Задание 2 (Мощнейший метод)
Здравствуйте, дорогие друзья! Сегодня разберём, как решать второе задание из ЕГЭ по информатике 2020.
Во втором задании ЕГЭ по информатике у нас обычно есть логическая функция, которая зависит от логических переменных. Логические переменные могут принимать только два значения: 0 (Ложь) или 1 (Истина).


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






Порядок выполнения логических операций:
- () — операции в скобках
- ¬ — логическое отрицание
- ∧ — логическое умножение
- ∨ — логическое сложение
- ⟶ — следование
- ≡ — равнозначность
Так же на ЕГЭ по информатике будет полезно знать логические формулы :

Ещё соотношения:
Передём к решению задач из ЕГЭ по информатике
Задача 1 (лёгкая)
Логическая функция F задаётся выражением z ∧ ¬y ∧ (w → x). Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно. Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Видим, что у функции основным действием является логическое умножение. По таблице видно, что функция имеет значение только 1 . Логическое умножение даёт 1 (единицу) тогда, когда каждое выражение равно 1 (единице). Значит каждое выражение в нашей функции должно равняться единице.

Отсюда видно, что переменная z должна всегда быть равна 1 (единице). Это первый столбец. Отрицание y тоже должно быть 1 (единицей), тогда просто y всегда будет 0 (нулём). Это второй столбец.
Осталось определить положение w и x. Здесь делаем предположение, что в третьем столбце стоит w, а в 4-ом x. Проверяем построчно и видим, что во второй строчке при таком расположении из 1 следует 0, что в итоге приводит выражение (w → x) в 0, а у нас это выражение всегда должно быть 1 (единицей). Значит, мы предположение сделали неверное, и получается x — это третий столбец, а w — четвёртый.
Задача 2 (средний уровень)
Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (y ≡ z) ∨ w.
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
Определяем главную логическую операцию («главную скрипку»), которая соединяет разные выражения. Видим, что это логическое сложение.
Во всех строчках таблицы функция принимает значение 0 (ноль). Значит, и каждое выражение должно принимать значение 0 (ноль).
Самым слабым звеном является переменная w, потому что она стоит одна. Переменная w должна равняться всегда 0(нулю) — этому условию может удовлетворить только третий столбец. Значит w стоит на третьем месте.
Следующим слабым звеном является равносильность. Она должна «выдавать» 0 (ноль). Равносильность «выдаёт» 0 (ноль), когда переменные разные!
Проанализируем первый и второй столбец. В третьей строчке, и там, и там, стоит 1 (единица). Значит, первый и второй столбец не могут быть одновременно y и z (или z и y).
Рассмотрим второй и четвёртый столбец. Вторая строчка содержит одинаковое значение 0 (ноль), и там, и там. Значит, второй и четвёртый столбец не могут быть одновременно y и z (или z и y).
Таким образом, y и z (или z и y) будут столбцы первый и четвёртый! И теперь можно расставить недостающие значения в этих столбцах. Расставляем, чтобы были разные значения, а второй столбец получается x.
Осталось разобраться с z и y. Обратимся к первому выражению (x ∧ ¬y) и посмотрим на третью строчку. Если в четвёртом столбце будет стоять y, то отрицание на y превратит ноль(ноль) в 1(единицу) в четвёртой строчке. Тогда окажется, что у x — 1 и ¬y — 1, и выражение (x ∧ ¬y) тоже получится 1(единицей). А у нас каждое выражение должно равняться 0(нулю). Получается y будет стоять в первом столбце, а z в четвёртом.
Тогда ответ будет равен yxwz.
Ответ: yxwz
Мощнейший метод для решения второго задания из ЕГЭ по информатике
Задача 3 (хороший уровень)
Логическая функция F задаётся выражением ((x → y ) ∧ (y → w)) ∨ (z ≡ ( x ∨ y)).
Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w.
В ответе напишите буквы x, y, z, w в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:
Тогда первому столбцу соответствует переменная y, а второму столбцу соответствует переменная x. В ответе нужно написать: yx.
«Главной скрипкой» в нашей функции является логическое сложение, потому что соединяет два выражения ((x → y ) ∧ (y → w)) и (z ≡ ( x ∨ y)).
Тогда каждое выражение должно равняться 0(нулю).
Теперь кульминация мощнейшего метода. У нас всего 4 переменных. Выпишем все комбинации для 4-х переменных. Таблица будет точно такая же, как мы писали в первом задании (её очень легко составить). Всего получается 16 комбинаций (16 = 2 4 ).
Теперь отметим зелёным плюсом те строчки, которые обращают выражение ((x → y ) ∧ (y → w)) в 0(ноль). Следующий шаг: Отметим галочкой те строчки, которые обращают в ноль второе выражение (z ≡ ( x ∨ y)) (Мы должны искать среди тех, которые уже отмечены плюсом).
При небольшой тренировке анализ подобных выражений занимает сущие секунды!

У нас получается 4 строчки, которые удовлетворяют нашей функции:

Отсюда видно, что переменная z может быть равна только 0(нулю)! Значит, она занимает третий столбец, потому что в остальных столбцах есть хотя бы одна 1(единица).
Переменная w имеет только одну 1(единицу). Значит, её ставим во второй столбец, потому что в первом и четвёртом уже по 2 единицы минимум, а третий уже занят z.
Теперь находим строчку c 1(единицей) в переменной w (Таблица данная в условии задачи) Кто в этой строчке будет иметь единицу (кроме w) — будет x! Это четвёртый столбец! Значит, x — это четвёртый столбец. Переменной y — достаётся первый столбец
Ответ: ywzx.
На этом всё! Сегодня рассмотрели теорию и основные методы для эффективного решения второго задания из ЕГЭ по информатике!
Как решать 2 задание егэ информатика через паскаль
Наш курс: Путь к 100 баллам. № 1-27
https://stepik.org/a/125485
Для получения скидки в 15% напиши TELEGRAM в сообщения сообщества ВК:
https://vk.com/pro100ege68
About
Blog
Apps
Platform
PRO100 ЕГЭ Информатика 2024
1.68K subscribers

Видеоразбор решения нового № 13 на IP-адреса из Демоверсии в Python!
933 views PRO100 EGE , 09:02

⛔️ Паскаль запретили на ЕГЭ?
В Спецификация КИМ ЕГЭ 2024 г. Паскаль отсутствует в списке языков программирования.
И кумир тоже отсутствует.
Зато С# и Java оставили.
❓Значит ли это, что Паскаля не будет на ЕГЭ?
Не, знаем. Звучит как полный бред. Но очень странно зачем ФИПИ убрали из данного списка Паскаль.
На третьем скриншоте Паскаль всё же упоминается!
Если кто-то обладает информацией по данному инциденту, то напишите нам!
Не переживайте, 99% что Паскаль будет. Данный пост скорее шуточный, но мало-ли.
985 views PRO100 EGE , 17:17

Продолжаем изучать Демоверсию
На данном скриншоте ФИПИ предлагает для сдачи экзамена выучить только Кумир.
Кто-нибудь решал 26, 27 в Кумире?
1.0K views PRO100 EGE , 09:57

Очень интересная цитата из Демоверсии ОГЭ
«Все задания, используемые для составления экзаменационных вариантов, размещены в открытом банке заданий ОГЭ на сайте fipi.ru.»
Получается на экзамене могут встретиться ТОЛЬКО задания из открытого банка ФИПИ. Как-то это слишком легко.
❗️Если вдруг в банке появятся новые задания – мы сразу здесь вам сообщим!
1.1K views PRO100 EGE , 10:02

Мы создали чат в Телеграме!
В нём будем обсуждать ЕГЭ и помогать друг другу в решении задач.
935 views PRO100 EGE , 13:03

Продолжение рубрики «ПРО ЕГЭ»!
Wing, IDLE или PyCharm | ПРО ЕГЭ #5
Инструкция по установке и использованию PyCharrm
Скоро здесь будет ссылка.
Бесплатный курс: Информатика ЕГЭ 2024. Твой спутник при подготовке
https://stepik.org/course/100056
Бесплатный курс: ЕГЭ 2024 Информатика № 24: разбор всех возможных…
975 views PRO100 EGE , 12:02

ma_mr_2023.pdf
Полный документ с анализом ЕГЭ по математике 2023.
881 views PRO100 EGE , 12:01

ФИПИ выложили статистику и анализ результатов ЕГЭ 2023!
Мы собрали для вас самые важные тезисы.
Математика:
– Число участников снизилось до 294,5 тыс. (около 307,5 тыс. в 2022 г.)
– Средний тестовый балл в 2023 г. остался заметно выше среднего балла 2021 г.
– Снижение доли не преодолевших порога
– Среди заданий с полным решением наибольшее количество полных баллов, как и в прошлые годы, получено по заданиям 12 и 14.
– Решая экзаменационные задачи предыдущих лет, школьник готовится к прошлогоднему экзамену, а не к предстоящему. Это проявилось в снижении процента выполнения экономической задачи.
– При этом определенный рост акцента в экзамене профильного уровня на важные для инженерных специальностей геометрические задания способствовал росту геометрической подготовки выпускников.
Информатику пока не выложили – ждём в ближайшие дни
Пост про анализ ЕГЭ по русскому языку выйдет завтра!
1.0K views PRO100 EGE , 12:02

⚡️Только что вышла новая версия проекта Демоверсии ЕГЭ по информатике!
Исправили формулировку и ответ в № 7.
PascalABC.NET и ЕГЭ по информатике 2022
Мы рекомендуем всем, кто готовит и готовится к сдаче ЕГЭ, ограничиться возможностями PascalABC.NET 3.8.3. Эта версия вышла в начале марта 2022 года. Язык продолжает развиваться и совершенствоваться, но невозможно обеспечить на станциях ЕГЭ наличие самой последней версии программного обеспечения. Использование более ранних версий лишит школьника некоторых имеющихся в языке возможностей и потребует самостоятельно искать для них эквивалентные замены.
Мы призываем тех работников образования, от которых зависит состояние программных средств на станциях ЕГЭ, заблаговременно установить любую доступную сборку версии 3.8.3 или выше.
Просим руководство учебных заведений принять к сведению, что многие школьники, занимаясь самостоятельно или с репетиторами, используют именно эту версию и, обнаружив на экзамене версию более старую, могут показать результат гораздо ниже своих возможностей.
Об этом документе
Решения даются с кратким описанием алгоритма и концентрируются в основном на демонстрации возможностей языка.
Решения сбалансированы по простоте записи и восприятия в балансе с новыми возможностями.
В сети можно встретить либо более длинные и непонятные решения на старом языке Паскаль либо переусложнённые и малопонятные для школьника решения с использованием всех возможностей языка. Ни тот ни другой стиль записи программ нами не рекомендуется.
Великолепный разбор задач типа 25 и 26 ЕГЭ по информатике 2021 на чистом PascalABC.NET дан К.Ю.Поляковым в данной презентации. Здесь представлены наиболее эффективные и неочевидные решения.
О PascalABC.NET
PascalABC.NET – современный диалект языка программирования Паскаль, позволяющий записывать код компактно и понятно, используя современные языковые возможности. Это делает программу яснее и как следствие сокращает число возможных ошибок на ЕГЭ по информатике, связанных с волнением и другими субъективными причинами.
Данный текст составлен разработчиками языка и рассматривает ряд вопросов, связанных с использованием PascalABC.NET при сдаче ЕГЭ по информатике. Он ориентирован:
- на школьников, использующих при сдаче ЕГЭ PascalABC.NET как язык реализации программ
- на преподавателей, которые при подготовке школьников к сдаче ЕГЭ по информатике используют PascalABC.NET
Важно! Данный текст не рассматривает вопросы, связанные с методикой решения задач. Он лишь описывает то, как на PascalABC.NET сделать запись алгоритмов лучше, сохранив при этом эффективность.
PascalABC.NET имеет множество языковых возможностей и множество стилей программирования, поскольку обобщает современные языковые и библиотечные возможности сразу нескольких современных языков программирования (C#, Python, Kotlin).
При решении задач ЕГЭ по информатике мы рекомендуем использовать лишь ограниченный набор возможностей PascalABC.NET, которые делают текст программы яснее и короче, позволяя концентрироваться на сути алгоритма, а не на технических деталях.
К базовым возможностям языка, рекомендуемым нами при решении задач ЕГЭ, относятся:
- Описания переменных внутри блока в том месте, где они впервые потребовались. Это ликвидирует длинные перечни описания переменных до beginа основной программы, ухудшающие читаемость и лёгкость написания программы.
- Автовывод типа переменной при описании с инициализацией ( var a := 1 ).
- Использование описания счётчика цикла for в заголовке цикла ( for var i ).
- Функции ввода вида ReadInteger , ReadReal , ReadInteger2 и т.д., позволяющие одной строкой описывать и вводить переменную в любом месте операторного блока программы ( var a := ReadInteger ).
- Процедуры вывода Print , Println , автоматически разделяющие элементы вывода пробелами.
- Цикл loop – аналог цикла for, использующийся когда счётчик цикла не нужен.
- Кортежи и распаковка кортежей в переменные, называемая также множественным присваиванием: (a,b) := (1,1) .
Кроме того, в некоторых задачах уместно использование лямбда-выражений как параметров стандартных методов.
Все представленные здесь решения сбалансированно сочетают простоту и понятность записи и использование новых возможностей.
Задача 17
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1016; 7937], которые делятся на 3 и не делятся на 7, 17, 19, 27. Найдите количество таких чисел и максимальное из них. В ответе запишите два целых числа: сначала количество, затем максимальное число.
Решение 1. Минимум новых возможностей; длинная запись условия, уводящая от сути
begin var count := 0; var max := -MaxInt; for var x := 1016 to 7937 do if (x mod 3 = 0) and (x mod 7 <> 0) and (x mod 17 <> 0) and (x mod 19 <> 0) and (x mod 27 <> 0) then begin count += 1; if x > max then max := x; end; Print(count,max); end.
Ответ. 1568 7935
Решение 2. Использование методов Divs и DivsAny
begin var count := 0; var max := -MaxInt; for var x := 1016 to 7937 do if x.Divs(3) and not x.DivsAny(7, 17, 19, 27) then begin count += 1; if x > max then max := x; end; Print(count,max); end.
Решение 2а. Заметим, что максимальный элемент является последним удовлетворяющим условию
begin var count := 0; var last := 0; for var x := 1016 to 7937 do if x.Divs(3) and not x.DivsAny(7, 17, 19, 27) then begin count += 1; last := x; end; Print(count,last); end.
Решение 3. Использование последовательностей
begin // Рассмотрим последовательность целых от 1016 до 7937, делящихся на 3 и не делящихся ни на одно из 7, 17, 19, 27 var seq := (1016..7937).Where(x -> x.Divs(3) and not x.DivsAny(7, 17, 19, 27)); // Выведем количество элементов этой последовательности и ее максимальный элемент Print(seq.Count,seq.Max); end.
Замечание. Аналогично предыдущему вместо seq.Max можно использовать seq.Last
Задача 25
Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в таблицу на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке таблицы также должны следовать в порядке возрастания.
Решение 1
Для получения всех делителей составим функцию, которая будет помещать все получаемые делители в список. Это неэффективно (нужны только числа с ровно двумя делителями), но для приводимых на ЕГЭ значений программа выполняется мгновенно, поэтому писать более оптимальный алгоритм не следует.
function Divisors(N: integer): Listinteger>; begin Result := new Listinteger>; for var i:=2 to N-1 do if N.Divs(i) then Result.Add(i); end; begin for var N := 174457 to 174505 do begin var d := Divisors(N); if d.Count = 2 then Println(d[0],'|',d[1]); end; end.
Ответ.
3 | 58153 7 | 24923 59 | 2957 13 | 13421 149 | 1171 5 | 34897 211 | 827 2 | 87251
Решение 2
Без использования функции
begin for var N := 174457 to 174505 do begin var d := new Listinteger>; for var i:=2 to N-1 do if N mod i = 0 then d.Add(i); if d.Count = 2 then Println(d[0],'|',d[1]); end; end.
Решение 3
Более эффективное, в котором список делителей не пополняется если уже содержит более двух делителей. Это решение — на случай достаточно больших значений N, что трудно представить на ЕГЭ
begin for var N := 174457 to 174505 do begin var d := new Listinteger>; for var i:=2 to N-1 do begin if N mod i = 0 then d.Add(i); if d.Count > 2 then // Это условие даёт более эффективное решение break; end; if d.Count = 2 then Println(d[0],'|',d[1]); end; end.
Данное решение тем не менее будет медленно работать при очень больших N, однако подобное усложнение невозможно на ЕГЭ — оно делает задачу олимпиадной. Однако, решение есть и в этом случае. Оптимизации решения задачи 25 рассмотрены в презентации К.Ю. Полякова.
Задача 26
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные.
В первой строке входного файла находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 10 000) и N – количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
100 4 80 30 50 40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера:
2 50
Решение 1
begin Assign(input, '26.txt'); var (S,N) := ReadInteger2; var data := ReadArrInteger(N); Sort(data); var (total,count) := (0,0); while (count N) and (total + data[count] S) do begin total += data[count]; count += 1; end; var delta := S - total; Println(count, data.Last(x -> x - data[count-1] delta)); end.
Решение скорее всего позаимствовано с сайта К. Полякова с косметическими правками в стиле PascalABC.NET.
Решения аналогичных задач на чистом PascalABC.NET содержатся в презентации К.Ю. Полякова.
Ответ.
568 50
Задача 27
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число – максимально возможную сумму, соответствующую условиям задачи.
Входные данные.
Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример организации исходных данных во входном файле:
6 1 3 5 12 6 9 5 4 3 3 1 1
Для указанных входных данных значением искомой суммы должно быть число 32. В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B. Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.
Решение 1
begin Assign(input,'27-b.txt'); var (s, d) := (0, MaxInt); var n := ReadInteger; loop n do begin var (a,b) := ReadInteger2; s += Max(a,b); var diff := Abs(a-b); if diff mod 3 <> 0 then d := Min(d, diff) end; if s mod 3 <> 0 then Print(s) else Print(s-d) end.
Решение скорее всего позаимствовано с сайта К. Полякова с косметическими правками в стиле PascalABC.NET.
Ответ.
127127 399762080
Далее рассматриваются задачи, которые не требуют решения в виде программы, однако с помощью программы можно проверить ответ.
Задача 5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
- Строится двоичная запись числа N.
- К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия – справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью искомого числа R. Укажите такое наименьшее число N, для которого результат работы данного алгоритма больше числа 77. В ответе это число запишите в десятичной системе счисления.
Пояснение
Для решения используется функция Bin модуля School, содержащего ряд базовых математических алгоритмов:
uses School; begin for var NN := 1 to 100 do begin var N := NN; var rem := Bin(N).Count(d->d='1') mod 2; N := 2*N + rem; rem := Bin(N).Count(d->d='1') mod 2; N := 2*N + rem; Println(NN,N); end; end.
Задача 12
Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
Эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Например, выполнение команды заменить (111, 27) преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки v, то выполнение команды заменить (v, w) не меняет эту строку.
Эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
ПОКА условие последовательность команд КОНЕЦ ПОКА
выполняется, пока условие истинно.
ЕСЛИ условие ТО команда1 ИНАЧЕ команда2 КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Какая строка получится в результате применения приведённой ниже программы к строке, состоящей из 70 идущих подряд цифр 8? В ответе запишите полученную строку.
НАЧАЛО ПОКА нашлось (2222) ИЛИ нашлось (8888) ЕСЛИ нашлось (2222) ТО заменить (2222, 88) ИНАЧЕ заменить (8888, 22) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ
Решение. Условие — слишком длинное ))
begin var s := 70 * '8'; while ('2222' in s) or ('8888' in s) do if '2222' in s then s := s.Replace('2222', '88', 1) else s := s.Replace('8888', '22', 1); Print(s); end.
Ответ
Задача 14
Значение арифметического выражения: 49 7 + 7 21 – 7 – записали в системе счисления с основанием 7. Сколько цифр 6 содержится в этой записи?
Решение.
begin var bb := 49bi ** 7 + 7bi ** 21 - 7; var count := 0; repeat if bb mod 7 = 6 then count += 1; bb := bb div 7; until bb = 0; Count.Print; end.
Пояснение 49bi , 7bi — это константы типа BigInteger
Ответ
Решение 2. Используем стандартный метод ToBase модуля School и стандартный метод последовательностей CountOf:
uses School; begin (49bi ** 7 + 7bi ** 21 - 7).ToBase(7).CountOf('6').Print end.
Задача 15
Обозначим через ДЕЛ(n, m) утверждение «натуральное число n делится без остатка на натуральное число m». Для какого наибольшего натурального числа А формула
¬ДЕЛ(x, А) → (ДЕЛ(x, 6) → ¬ДЕЛ(x, 9))
тождественно истинна (то есть принимает значение 1 при любом натуральном значении переменной х)?
Решение.
begin // Возьмём большой диапазон a: от 1 до 10000 for var a := 10000 downto 1 do // Если для всех натуральных x (возьмём некоторый большой диапазон) // выполняется условие задачи, то мы нашли a if (1..100000).All(x -> not x.Divs(a) (x.Divs(6) not x.Divs(9))) then begin Print(a); break; end; end.
Пояснение Импликация → в PascalABC.NET описывается операцией
Пояснение
Тип BigInteger указан “на всякий случай” — если будут возникать очень большие целые. В задачах ЕГЭ — вряд ли
Задача 16
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(n) = 1 при n = 1; F(n) = n + F(n − 1), если n – чётно, F(n) = 2 × F(n − 2), если n > 1 и при этом n – нечётно.
Чему равно значение функции F(26)?
Решение.
function F(n: integer): BigInteger; begin if n = 1 then Result := 1 else if n.IsEven then Result := n + F(n - 1) else Result := 2 * F(n - 2); end; begin F(26).Print end.
Ответ
4122
©2023 PascalABCNET Team. All rights reserved.
Page last updated: 07.01.2020
Site last generated: Jul 31, 2023
