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