Решение: Подсчёт восьмеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 2. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0, которое не входит в последовательность. Программа должна вывести только одно число — количество искомых элементов.
Решение по шагам
4 шагаЧетырёхзначная запись в восьмеричной системе начинается с разряда $8^3$, поэтому число должно удовлетворять неравенству $8^3 \leq n < 8^4$.
$$512 \leq n < 4096$$Последняя цифра записи числа в восьмеричной системе равна остатку от деления числа на 8. Поэтому для последней цифры 2 необходимо условие:
$$n \bmod 8 = 2$$Считываем числа до появления нуля. Для каждого числа, удовлетворяющего обоим условиям, увеличиваем счётчик.
Пример программы на 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 == 2:\n count += 1\nprint(count)$$count = 0; while True: n = int(input()); if n == 0: break; if 8**3 <= n < 8**4 and n % 8 == 2: count += 1; print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют последнюю десятичную цифру вместо последней цифры восьмеричной записи.
Используют только условие n % 8 == 2 и не проверяют, что запись является четырёхзначной.
Включают число 0 в последовательность.
Путают верхнюю границу диапазона и записывают условие n <= 4096.