Решение: Подсчёт восьмеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 3. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число — количество искомых элементов последовательности.
Пример работы программы:
Входные данные: 483, 555, 891, 3027, 4123, 0.
Выходные данные: 3.
Решение по шагам
4 шагаЧетырёхзначная запись в восьмеричной системе начинается с числа $8^3 = 512$ и заканчивается перед числом $8^4 = 4096$.
$$512 \leq n < 4096$$Последняя цифра восьмеричной записи равна остатку от деления числа на 8. Поэтому искомые числа дают остаток 3.
$$n \bmod 8 = 3$$Считываем числа до появления нуля. Для каждого числа, удовлетворяющего обоим условиям, увеличиваем счётчик.
После завершения ввода выводим значение счётчика.
$$count = count + 1$$Пример программы на Python:
count = 0
n = int(input())
while n != 0:
if 512 <= n < 4096 and n % 8 == 3:
count += 1
n = int(input())
print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют количество цифр в десятичной записи вместо количества цифр в восьмеричной.
Используют условие n % 8 == 3 без проверки диапазона четырёхзначных восьмеричных чисел.
Включают число 0 в последовательность.
Забывают считать числа, равные 512 или меньшие 4096.