Решение: Подсчёт восьмеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 6. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число — количество искомых элементов последовательности.
| Входные данные | Выходные данные |
|---|---|
| 486 558 894 3030 4126 0 | 3 |
Пример работы программы: на вход подаются числа 486, 558, 894, 3030, 4126, 0; программа выводит 3.
Решение по шагам
4 шагаЧетырёхзначная запись в восьмеричной системе начинается с разряда $8^3$, поэтому число должно быть не меньше 512. Верхняя граница четырёхзначных чисел равна $8^4-1=4095$.
$$8^3 \leq n < 8^4$$Последняя цифра восьмеричной записи определяется остатком от деления числа на 8. Для цифры 6 должно выполняться условие $n \bmod 8 = 6$.
$$n \bmod 8 = 6$$Считываем числа до появления нуля. Если оба условия выполняются, увеличиваем счётчик и после завершения ввода выводим его.
Один из возможных вариантов программы на Python:
$$count = 0 n = int(input()) while n != 0: if 8**3 <= n < 8**4 and n % 8 == 6: count += 1 n = int(input()) print(count)$$Для приведённого примера искомыми являются числа 558, 894 и 3030, поэтому программа выводит 3.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют количество цифр в десятичной записи вместо восьмеричной.
Используют условие n % 10 == 6, хотя последняя восьмеричная цифра определяется остатком n % 8.
Включают число 0 в подсчёт.
Неверно задают границы диапазона: четырёхзначные восьмеричные числа находятся в диапазоне от 512 до 4095.