Условие
Источник задания: Демоверсия 2024
Напишите программу, которая в последовательности натуральных чисел определяет количество трехзначных чисел, кратных 4. Программа получает на вход натуральные числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введённые числа не превышают 30 000.
Программа должна вывести одно число: количество трехзначных чисел, кратных 4.
Пример работы программы:
Решение
Для реализации программы, обратим внимание на то, каким образом происходит ввод данных. Числа мы вводим с клавиатуры, друг за другом, до тех пор пока не будет введен ноль. Реализовать такой ввод можно двумя способами:
Первый способ реализации — цикл while. Идея в том, что до начала ввода переменной a задается любое число, отличное от нуля. Сам цикл будет выполняться до тех пор, пока внутри него при вводе числа не будет введен ноль.
#начало фрагмента
a = 1
while a != 0:
a = int(input())
#конец фрагмента
Второй способ — цикл for. В условии задания сказано, что максимально может быть введено тысяча чисел. Это значит что цикл может выполниться тысячу раз. Но если будет введен ноль — выполнение цикла нужно прекратить.
#начало фрагмента
for i in range(1000):
a = int(input())
if a == 0:
break
#конец фрагмента
Оператор break прерывает выполнение текущего цикла
Определить, что число трехзначное можно несколькими способами:
Самый простой способ, это сравнить введенное число. Оно должно быть в диапазоне от 100 до 1000, не включая правую границу, то есть 1000.
#начало фрагмента
a = int(input())
if a in range(100, 1000)
#конец фрагмента
Можно через условие.
#начало фрагмента
a = int(input())
if a > 99 and a < 1000:
#конец фрагмента
После ввода с клавиатуры можно определить длину введенного числа, если мы использовали строковую переменную
#начало фрагмента
a = input()
if len(a) == 3:
#конец фрагмента
Если при вводе числа с клавиатуры мы преобразовывали его сразу в целое число, то можно сделать его строкой, и определить длину.
#начало фрагмента
a = int(input())
if len(str(a)) == 3:
#конец фрагмента
Самый сложный способ, это определить сколько раз число может поделиться на 10. Если число трехзначное — то оно 3 раза поделится на десять.
#начало фрагмента
a = int(input())
r = 0
a1 = a
while a1 > 0:
r += 1
a1 //= 10
if r == 3:
#конец фрагмента
В последнем способе приходится использовать много второстепенных переменных, таких как r и a1. В r сохраняем информацию о том, сколько раз число поделилось на 10. Переменная a1 нужна для того, чтобы начальное значение a сохранилось, так как дальше нужно проверить на кратность четырем. Если переменной a1 пренебречь, то кратность лучше проверять до этого действия, так как после него переменная будет равна 0.
После того, как мы определим является ли число трехзначным, нужно выяснить кратно ли оно четырем.
Для этого посмотрим на остаток от деления на четыре. Если остаток равен 0 — то число кратно.
#начало фрагмента
if a % 4 == 0
#конец фрагмента
По желанию оба условия можно объединить в одно сложное. Во многих случаях это приводит к увеличению времени работы программы.
Выполнение всех условий говорит о том, что число подходит и его надо подсчитать.
#начало фрагмента
res += 1
#конец фрагмента
После ввода всех чисел выведем ответ на экран.
#начало фрагмента
print(res)
#конец фрагмента
Листинг программы
1 решение
2 решение
res = 0
for i in range(1000):
a = int(input())
if a == 0:
break
if a > 99 and a < 1000:
if a % 4 == 0:
res += 1
print(res)
res = 0
a = 1
while a > 0:
a = int(input())
if len(str(a)) == 3 and a % 4 == 0:
res += 1
print(res)