Решение: Подсчёт шестнадцатеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру 5. На вход программе сначала подаётся количество элементов последовательности $N$ ($1 \leq N \leq 1000$), затем каждый элемент последовательности в отдельной строке. Программа должна напечатать только одно число — количество искомых элементов.
| Входные данные | Выходные данные |
|---|---|
| 5 165 277 885 949 4117 | 3 |
Решение по шагам
4 шагаСчитываем количество элементов последовательности и устанавливаем счётчик подходящих чисел равным нулю.
$$count = 0$$Для каждого числа получаем его запись в шестнадцатеричной системе без префикса `0x`.
$$s = \operatorname{hex}(x)[2:]$$Число подходит, если его шестнадцатеричная запись содержит ровно три символа и последний символ равен `5`.
$$\operatorname{len}(s)=3 \land s[-1]='5'$$При выполнении условия увеличиваем счётчик и после обработки всех чисел выводим его значение.
$$print(count)$$Пример решения на Python:
n = int(input())
count = 0
for _ in range(n):
x = int(input())
s = hex(x)[2:]
if len(s) == 3 and s[-1] == '5':
count += 1
print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют трёхзначность числа в десятичной системе, а не длину его шестнадцатеричной записи.
Забывают удалить префикс `0x` перед подсчётом длины записи.
Проверяют последнюю десятичную цифру числа вместо последнего символа шестнадцатеричной записи.
Выводят сами подходящие числа, хотя требуется вывести только их количество.