Решение: Подсчёт восьмеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 7. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число — количество искомых элементов последовательности.
Пример работы программы:
Входные данные:
487
559
895
3031
4127
0
Выходные данные:
3
Решение по шагам
4 шагаЧетырёхзначная запись в восьмеричной системе начинается с числа $1000_8 = 8^3 = 512$ и заканчивается числом $7777_8 = 8^4 - 1 = 4095$.
$$512 \leq n \leq 4095$$Последняя цифра восьмеричной записи числа равна остатку от деления числа на 8. Поэтому запись оканчивается цифрой 7, если остаток равен 7.
$$n \bmod 8 = 7$$Организуем цикл чтения до появления числа 0. Если оба условия выполнены, увеличиваем значение счётчика.
После завершения ввода выводим счётчик.
Пример программы на Python:
count = 0
n = int(input())
while n != 0:
if 512 <= n <= 4095 and n % 8 == 7:
count += 1
n = int(input())
print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют диапазон десятичных чисел неправильно и используют границы 1000 и 9999.
Проверяют последнюю десятичную цифру вместо остатка от деления на 8.
Учитывают число 0 как элемент последовательности.
Забывают считать числа, которые одновременно удовлетворяют обоим условиям.