В задаче 15.2 учащемуся требуется написать программу, которая должна отработать на различных тестах и выдать верный ответ.
В данной статье хочу систематизировать различные задачи, что, надеюсь, поможет учащимся при подготовке к ОГЭ.
I
Итак, как правило, учащимся предлагается решить задачу, которая будет находить сумму, количество, максимум или минимум среди вводимых элементов, удовлетворяющих какому-либо условию.
Ввод данных осуществляется с помощью цикла с параметром (FOR), если по условию известно количество вводимых чисел или с помощью цикла с предусловием (WHILE), если количество вводимых чисел неизвестно, а их ввод заканчивается при вводе нуля.
Стандартные алгоритмы выглядят так[1]:
Нахождение сумм:
FOR |
WHILE |
s=0; for i in range(N): x=int(input()) if <условие>: s+=x print(s) |
x=int(input()) s=0 while x!=0: if <условие>: s+=x x=int(input()) print(s) |
Нахождение количества:
FOR |
WHILE |
k=0; for i in range(N): x=int(input()) if <условие>: k+=1 print(k) |
x=int(input()) k=0 while x!=0: if <условие>: k+=1 x=int(input()) print(k) |
Нахождение минимума:
FOR |
WHILE |
m=10000; for i in range(N): x=int(input()) if x<m: m=x print(m)
|
x=int(input()) m=10000 while x!=0: if x<m: m=x x=int(input()) print(m) |
Нахождение максимума:
FOR |
WHILE |
m=-10000; for i in range(N): x=int(input()) if x>m: m=x print(m)
|
x=int(input()) m=-10000 while x!=0: if x>m: m=x x=int(input()) print(m) |
При решении данных задач надо не забыть вывести найденный результат и правильно инициализировать переменные (при нахождении максимума или минимума обычно ориентируемся на заданный по условию диапазон для исходных данных).
Ниже перечислим условия, которые чаще всего встречаются в заданиях №15.2. Иногда по условию требуется использовать несколько условий, которые можно группировать с помощью and/or.
Условие (русский язык) |
Условие (Питон) |
Отобрать чётные элементы |
if x % 2 == 0: |
Отобрать нечётные элементы |
if x % 2 != 0: |
Отобрать элементы, оканчивающиеся на y |
if x % 10 == y: |
Отобрать элементы, кратные y |
if x % y == 0: |
Отобрать двузначные элементы |
if x > 9 and x < 100: |
Отобрать положительные элементы |
if x > 0: |
Отобрать элементы большие b, меньшие c |
if b<x<c: |
Итак, комбинируя различные условия и используя основные алгоритмы, можно решить большинство заданий №15.2.
II
Иногда в задачах требуется вывести найденное значение или вывести «NO», если такого значения не удалось найти среди введённых чисел последовательности.
Ниже приведены условия таких задач, взятых с сайта Решу ОГЭ
FOR
15.2 Напишите программу, которая в последовательности натуральных чисел определяет количество чисел, кратных 6 и оканчивающихся на 4 или определяет, что таких чисел нет. Программа получает на вход количество чисел в последовательности, а затем сами числа. Количество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Программа должна вывести количество чисел, кратных 6 и оканчивающихся на 4 или вывести «NO», если таких чисел нет.
Входные данные |
Выходные данные |
3 24 25 54 |
2 |
Входные данные |
Выходные данные |
3 17 25 33 |
NO |
WHILE
15.2 Напишите программу, которая в последовательности натуральных чисел определяет сумму всех чисел, кратных 6 и оканчивающихся на 4 или сообщает, что таких чисел нет. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 100. Введённые числа не превышают 300. Программа должна вывести сумму всех чисел, кратных 6 и оканчивающихся на 4 или вывести «NO», если таких чисел нет.
Пример работы программы:
Входные данные |
Выходные данные |
54 28 72 34 24 0 |
78 |
В таких задачах в конце программы надо не просто вывести результат, а вывести его исходя из условия, например:
if k==0:
print (‘NO’)
else:
print (k)
III
Есть ещё одна разновидность задач, когда требуется вывести не только ответ на основной вопрос, но и на дополнительный.
MIN/MAX
15.2 Напишите программу, которая в последовательности натуральных чисел определяет минимальное число, кратное 3. Программа получает на вход количество чисел в последовательности, а затем сами числа. В последовательности всегда имеется число, кратное 3. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Программа должна вывести минимальное число, кратное 3. Если в последовательности хотя бы одно число было меньше 5, выведите «YES», иначе выведите «N0».
Пример работы программы:
Входные данные |
Выходные данные |
3 |
12 |
В таком случае рекомендуется ввести дополнительную переменную (так называемый «флажок»), которая будет запоминать: встречались ли такие значения среди вводимых чисел последовательности.
Решение для приведённой выше задачи:
n=int(input())
m=30001
f=0 # флажок
for i in range(n):
x=int(input())
if x<m and x % 3 ==0:
m=x
if x<5:
f=1 #запоминаем, что в последовательности было число удовлетворяющее условию
print(m)
if f==0:
print('NO')
else:
print('YES')
IV
Заканчивая статью, хочу привести ещё несколько интересных условий задач с того же сайта Решу ОГЭ. Это задачи из жизненных ситуаций, а не на обработку абстрактных цифр. Данная подборка должна быть обязательно разобрана учениками, планирующими решать задачу 15.2
1. Напишите программу для решения следующей задачи. Девятиклассники участвовали в викторине по математике. Необходимо было ответить на 20 вопросов. Победителем викторины считается участник, правильно ответивший на наибольшее количество вопросов. На сколько вопросов победитель ответил правильно? Если есть участники викторины, которые не смогли дать правильный ответ ни на один из вопросов, выведите YES, иначе выведите NO. Гарантируется, что есть участники, правильно ответившие хотя бы на один из вопросов. Программа получает на вход число участников викторины N (1 ≤ N ≤ 50), затем для каждого участника вводится количество вопросов, на которые получен правильный ответ.
Пример работы программы:
Входные данные |
Выходные данные |
4 15 12 0 17 |
17 YES |
2. Напишите программу для решения следующей задачи. Камера наблюдения регистрирует в автоматическом режиме скорость проезжающих мимо неё автомобилей, округляя значения скорости до целых чисел. Необходимо определить максимальную зарегистрированную скорость автомобиля. Если скорость хотя бы одного автомобиля была меньше 30 км/ч, выведите «YES», иначе выведите «N0».
Программа получает на вход число проехавших автомобилей N (1 < N < 30), затем указываются их скорости. Значение скорости не может быть меньше 1 и больше 300. Программа должна сначала вывести максимальную скорость, затем YES или NO.
Пример работы программы:
Входные данные |
Выходные данные |
4 |
74 |
3. Напишите программу для решения следующей задачи. Камера наблюдения регистрирует в автоматическом режиме скорость проезжающих мимо неё автомобилей, округляя значения скорости до целых чисел. Необходимо определить:
1) разность максимальной и минимальной скоростей автомобилей;
2) количество автомобилей, скорость которых не превышала 30 км/ч.
Программа получает на вход число проехавших автомобилей N (1 ≤ N ≤ 30), затем указываются их скорости. Значение скорости не может быть меньше 1 и больше 300. Программа должна сначала вывести разность максимальной и минимальной скоростей автомобилей, затем количество автомобилей, скорость которых не превышала 30 км/ч.
Пример работы программы:
Входные данные |
Выходные данные |
4 |
33 |
4. Напишите программу для решения следующей задачи. На контрольной по алгебре ученикам 9 класса было предложено 10 примеров. Неудовлетворительная оценка выставляется, если правильно решено менее половины примеров. Сколько неудовлетворительных оценок было получено учениками. Если хотя бы один из учеников правильно решил все задачи, выведите YES, иначе – выведите NO. Программа получает на вход количество учеников в классе N (1<=N<=30), затем для каждого ученика вводится количество правильно решённых примеров.
Пример работы программы
Входные данные |
Выходные данные |
4 3 9 2 8 |
2 NO |
5. Напишите программу для решения следующей задачи. Ученики 4 класса вели дневники наблюдения за погодой и ежедневно записывали дневную температуру. Найдите среднюю температуру для дней, когда столбик термометра поднимался выше нуля градусов. Определите количество таких дней. Гарантируется, что за время наблюдения хотя бы в один из дней температура поднималась выше нуля градусов. Программа получает на вход количество дней, в течение которых проводилось наблюдение N (1 ≤ N ≤ 31), затем для каждого дня вводится температура.
Пример работы программы:
Входные данные |
Выходные данные |
4 –5 12 –2 8 |
10.0 2 |
6. Напишите программу для решения следующей задачи. Участники парусной регаты стартовали одновременно. На финише фиксировалось время прохождения маршрута каждой яхтой (в часах и минутах). Определите время победителя регаты (в часах и минутах). Известно, что соревнования проходили в течение 12 часов. Программа получает на вход количество яхт, принимавших участие в регате N (1 ≤ N ≤ 100), затем для каждой яхты вводится два числа: часы и минуты, затраченные на прохождение маршрута.
Пример работы программы:
Входные данные |
Выходные данные |
2 3 25 2 50 |
2 50 |
7. Напишите программу для решения следующей задачи. На соревнованиях по бегу на 5000 метров для выхода в финал необходимо показать время не более 18 минут 30 секунд.
Сколько спортсменов по результатам соревнований вышли в финал? Программа получает на вход количество спортсменов, принимавших участие в соревнованиях (1 ≤ N ≤ 100), затем для каждого спортсмена вводится два числа: минуты и секунды – время, показанное на дистанции.
Пример работы программы:
Входные данные |
Выходные данные |
2 17 15 19 20 |
1 |
8. Напишите программу для решения следующей задачи. В мотокроссе участвовало N мотоциклистов. На финише фиксировалось время заезда каждого из них (в часах и минутах). Определите время победителя мотокросса (в часах и минутах). Известно, что соревнования проходили в течение 10 часов. Программа получает на вход количество участников N (1 ≤ N ≤ 100), затем для каждого мотоциклиста вводится два числа: часы и минуты, затраченные на проезд трассы.
Пример работы программы:
Входные данные |
Выходные данные |
2 3 25 2 50 |
2 50 |
Скачано с www.znanio.ru
[1] Здесь и далее будут приведены коды на Python
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.