Решение: Подсчёт чисел в восьмеричной системе
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 4. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0, которое не входит в последовательность. Программа должна вывести только одно число — количество искомых элементов.
Пример входных данных: 484, 556, 892, 3028, 4124, 0. Пример выходных данных: 3.
Решение по шагам
4 шагаЧетырёхзначная запись в восьмеричной системе начинается с разряда $8^3$, поэтому минимальное подходящее число равно $8^3 = 512$. Максимальное четырёхзначное восьмеричное число равно $8^4 - 1 = 4095$.
$$512 \leq n \leq 4095$$Последняя цифра записи числа в восьмеричной системе определяется остатком от деления на 8. Чтобы последняя цифра была равна 4, необходимо условие $n \bmod 8 = 4$.
$$n \bmod 8 = 4$$Читаем числа до появления нуля. Для каждого числа, удовлетворяющего обоим условиям, увеличиваем счётчик на единицу.
Один из вариантов программы на Python:
$$count = 0\nwhile True:\n n = int(input())\n if n == 0:\n break\n if 8**3 <= n < 8**4 and n % 8 == 4:\n count += 1\nprint(count)$$Условие отбора: $8^3 \leq n < 8^4$ и $n \bmod 8 = 4$; после обработки последовательности вывести счётчик.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют количество цифр в десятичной записи, а не в восьмеричной.
Используют верхнюю границу $8^4$, хотя число $8^4$ уже является пятизначным в восьмеричной системе.
Забывают остановить обработку при вводе нуля.
Включают число 0 в подсчёт.