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