Шешімі: Подсчёт чисел по жазбалар в восьмеричной системе
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 3.
На вход программе сначала подаётся количество элементов последовательности $N$ ($1 \leq N \leq 1000$), затем каждый элемент последовательности — в отдельной строке. Программа должна напечатать только одно число — количество искомых элементов.
Шешім по шагам
4 қадамЧисло имеет ровно четыре цифры в восьмеричной системе, если оно не меньше $8^3$ и не больше $8^4 - 1$.
$$8^3 = 512, \quad 8^4 - 1 = 4095$$Последняя цифра восьмеричной записи числа равна остатку от деления этого числа на 8. Поэтому требуется условие $x \bmod 8 = 3$.
$$x \bmod 8 = 3$$Последовательно считываем все $N$ чисел и увеличиваем счётчик, если выполнены оба условия.
$$512 \leq x \leq 4095 \ \text{и} \ x \bmod 8 = 3$$Пример реализации на Python:
n = int(input())
count = 0
for _ in range(n):
x = int(input())
if 512 <= x <= 4095 and x % 8 == 3:
count += 1
print(count)
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют только последнюю цифру десятичной жазбалар числа.
Используют границу 4096, хотя число 4096 имеет уже пять цифр в восьмеричной системе.
Забывают проверить, что жазба числа является четырёхзначной.
Используют условие ИЛИ вместо одновременной проверки диапазона и остатка от деления.