Леонид: Спасибо
20-09-2023
Читать статью
Калужский Александр: Леонид, цикл x повториться 300 раз, цикл..
Леонид: Почему k == 90000 в примере (x > A) ∨ (y..
Обновлённую статью по 17 заданию можете посмотреть здесь.
Привет! Сегодня поговорим о 17 задании из ЕГЭ по информатике нового образца 2021.
Это задание так же, как и предыдущее, решается на компьютере. Нужно составить программу на одном из доступных языков программирования при сдаче ЕГЭ по информатике.
Мы на этом уроке будем использовать язык программирования Pascal.
Перейдём к практике решения примерных задач из ЕГЭ по информатике 2021.
Рассматривается множество целых чисел, принадлежащих числовому отрезку [4668; 10414], которые делятся на 4 и не делятся на 7, 17. Найдите количество таких чисел и максимальное из них. В ответе запишите два целых числа: сначала количество, затем максимальное число.
Для выполнения этого задания можно написать программу или воспользоваться редактором электронных таблиц.
Напишем программу языке программирования Паскаль:
var i, c, max: integer; begin c:=0; max:=0; for i:=4668 to 10414 do begin if (i mod 4 = 0) and (i mod 7 <> 0) and (i mod 17 <> 0) then begin c := c + 1; if i > max then max:=i; end; end; Writeln(c); Writeln(max); End.
Рассмотрим анатомию данной программы:
В начале заводятся 3 переменные: для количества чисел, удовлетворяющих условию задачи (переменная c), и для максимального значения (переменная max) и для ЦИКЛА дополнительную переменную i.
Затем идёт инициализация переменных, т.е. присваиваем переменным начальные значения.
В начале количество чисел, удовлетворяющих условию задачи, равно нулю, поэтому переменная c равна нулю.
Переменной max присваиваем значение ноль. Мы выбираем очень маленькое значение специально, т.к. далее в ЦИКЛЕ будем брать все целые числа из заданного диапазона, и, если найдётся число, удовлетворяющее условию задачи, большее, чем значение в переменной max, то это число запишем в переменную max.
Таким образом, числа, которые "победят" переменную max, сами "получают титул" максимального значения и записываются в переменную max.
Для этого мы и делаем очень маленькое значение в начале. Ведь, если поставить в переменную max большое значение, его будет сложно "победить", и мы получим не правильный результат.
Важно знать: Если мы ищем максимальное значение, то в начале в переменную max кладём минимальное значение.
Примечание: Если после выполнения программы в переменной max останется ноль, значит, нету чисел в указанном интервале, удовлетворяющих условию задачи.
Далее идёт ЦИКЛ for. Он перебирает все целые числа от 4668 до 10414. Границы цикла показывают ключевые слова begin и end. Эти слова показывают границы чего-либо в языке программирования Паскаль. У нас с помощью этих слов в этом примере показаны границы основной части программы, ЦИКЛА for и условия!
Внутри ЦИКЛА находится команда условия if. Она проверяет подходит ли конкретное число из обозначенного диапазона под наши условия задачи. Если ДА, то мы прибавляем к переменной с единицу и проверяем может ли данное число претендовать на на максимальное значение.
Важно знать: Когда ищем количество, мы в ЦИКЛЕ прибавляем к переменной по 1.
После окончания ЦИКЛА у нас в переменных c и мах будут уже нужные нам значения. И мы их распечатываем на экран.
Количество чисел получилось 1159, а максимальное число, удовлетворяющие условию задачи, будет 10412.
Ещё посмотрим возможные задачи 17 задания из ЕГЭ по информатике 2021.
Рассматривается множество целых чисел, принадлежащих числовому отрезку [-2031; 5021], которые делятся на 7, являются нечётными и не делятся на 3. Найдите сумму таких чисел и минимальное из них. В ответе запишите два целых числа: минимальное значение, затем сумму.
Напишем программу на языке Pascal.
var i, sum, min: integer; begin min:=5022; sum:=0; for i:=-2031 to 5021 do begin if (i mod 7 = 0) and (i mod 2 <> 0) and (i mod 3 <> 0) then begin sum := sum + i; if i < min then min:=i; end; end; Writeln(sum); Writeln(min); End.
Здесь заводим переменные, которые нужны для решения задачи.
В переменную min кладём максимальное значение. Можно положить значение 5021 + 1.
Важно знать: Если мы ищем минимальное значение, то в начале в переменную min кладём максимальное значение.
Далее делаем аналогично предыдущей задаче. Нечётное число - это то число, которое не делится на 2.
Когда ищем минимальное значение, то в условии меняем знак на "меньше".
Важно знать: Когда ищем сумму, в ЦИКЛЕ суммируем сами значения переменной i.
После запуска программы получаем, что минимальное значение равно -2023, а сумма равна 500976.
Ещё одна задача из примерных вариантов 17 задания ЕГЭ по информатике 2021.
Рассматривается множество целых чисел, принадлежащих числовому отрезку [5883; 15906], которые делятся на 9 или 23 и не делятся на 13, 18, 19, 22. Найдите количество таких чисел и максимальное из них. В ответе запишите два целых числа без пробелов и других дополнительных символов: сначала количество, затем максимальное число.
В этой задаче нужно использовать в условии союз ИЛИ (or)
var i, c, max: integer; begin max:=0; c:=0; for i:=5883 to 15906 do begin if ((i mod 9 = 0) or (i mod 23 = 0)) and (i mod 13 <> 0) and (i mod 18 <> 0) and (i mod 19 <> 0) and (i mod 22 <> 0) then begin c := c + 1; if i > max then max:=i; end; end; Writeln(c); Writeln(max); End.
Обратите внимание: Выражение, в котором стоит союз ИЛИ (or ), взято в скобки. Дело в том, что союз И (and) имеет приоритет, поэтому, чтобы программа верно отработала условие задачи, нужно это выражение взять в скобки.
Количество чисел равно 810, максимальное число будет 15893.
Решим ещё одну задачу из 17 задания ЕГЭ по информатике 2021.
Рассматривается множество целых чисел, принадлежащих числовому отрезку [1; 2021], которые делятся на 13 и не оканчиваются на 9. Найдите количество таких чисел и максимальное из них. В ответе запишите два целых числа: сначала количество, затем максимальное число.
Напишем программу.
var i, c, max: integer; begin max:=0; c:=0; for i:=1 to 2021 do begin if (i mod 13 = 0) and (i mod 10 <> 9) then begin c := c + 1; if i > max then max:=i; end; end; Writeln(c); Writeln(max); End.
Важно знать: Конструкция i mod 10 показывает на что оканчивается число в переменной i
Количество чисел равно 139, а максимальное число равно 2015.
Посмотрим ещё одну редкую задачу из 17 задания ЕГЭ по информатике 2021.
Найдите сумму всех делителей числа 2021. Числа 1 и 2021 не учитывать.
var i, sum: integer; begin sum:=0; for i:=2 to 1010 do begin if 2021 mod i = 0 then begin sum := sum + i; end; end; Writeln(sum); End.
Перебираем все числа от 2 до 1010 (2021/2). Числа больше, чем половина от нашего числа 2021, не могут быть делителем числа 2021. Поэтому мы прогоняем цикл до 1010 (исключение составляет само число 2021, но по условию задачи его не нужно учитывать).
В ЦИКЛЕ мы последовательно проверяем все числа от 2 до 1010, кто из них является делителем числа 2021. Если число является делителем, то мы его суммируем.
После запуска программы получилось число 90.