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