Решение: Оценки за контрольную работу
На контрольной работе по алгебре ученикам 9 класса было предложено 10 примеров. Неудовлетворительная оценка выставляется, если правильно решено менее половины примеров. Сколько неудовлетворительных оценок было получено учениками? Если хотя бы один из учеников правильно решил все задачи, выведите YES, иначе выведите NO.
Программа получает на вход количество учеников в классе $N$ ($1 \leq N \leq 30$), затем для каждого ученика вводится количество правильно решённых примеров.
Входные данные:
$4$
$3$
$9$
$2$
$8$
Выходные данные:
$2$
YES
NO
Решение по шагам
3 шагаСчитываем количество учеников и создаём счётчик неудовлетворительных оценок. Также создаём логический признак того, что кто-то решил все 10 примеров.
$$bad = 0,\quad has\_all = False$$Для каждого ученика считываем количество правильно решённых примеров. Если это число меньше 5, увеличиваем счётчик неудовлетворительных оценок. Если число равно 10, отмечаем наличие полностью решившего ученика.
$$x < 5 \Rightarrow bad = bad + 1;\quad x = 10 \Rightarrow has\_all = True$$Выводим количество неудовлетворительных оценок, затем выводим YES при наличии полностью решившего ученика и NO в противном случае.
Пример решения на Python:
n = int(input())
bad = 0
has_all = False
for _ in range(n):
solved = int(input())
if solved < 5:
bad += 1
if solved == 10:
has_all = True
print(bad)
print('YES' if has_all else 'NO')
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Считать неудовлетворительной оценкой результат, равный 5, хотя неудовлетворительная оценка выставляется только при результате менее 5.
Проверять наличие ученика, решившего все задачи, условием solved > 5 вместо solved == 10.
Выводить YES или NO в той же строке, что и количество неудовлетворительных оценок.