Решение: Подсчёт восьмеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 6. На вход программе сначала подаётся количество элементов последовательности $N$ ($1 \le N \le 1000$), затем каждый элемент последовательности — в отдельной строке. Программа должна напечатать только одно число — количество искомых элементов.
| Входные данные | Выходные данные |
|---|---|
| 5 486 558 894 3030 4126 | 3 |
Решение по шагам
4 шагаВосьмеричная запись является четырёхзначной, если число не меньше $8^3 = 512$ и не больше $8^4 - 1 = 4095$.
Последняя цифра восьмеричной записи равна остатку от деления числа на $8$. Поэтому она равна $6$, если $x \bmod 8 = 6$.
Последовательно считываем все $N$ чисел и увеличиваем счётчик при выполнении обоих условий.
Для приведённого примера условиям соответствуют числа $558$, $894$ и $3030$, поэтому результат равен $3$.
```python
n = int(input())
count = 0
for _ in range(n):
x = int(input())
if 512 <= x <= 4095 and x % 8 == 6:
count += 1
print(count)
```
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют только остаток от деления на 8 и не учитывают количество цифр в восьмеричной записи.
Ошибочно используют диапазон от $8^2$ до $8^3 - 1$, соответствующий трёхзначным восьмеричным числам.
Забывают увеличить счётчик или выводят сами подходящие числа вместо их количества.