Решение: Подсчёт шестнадцатеричных записей
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру 2. В ответе запишите количество искомых элементов.
На вход программе сначала подаётся количество элементов последовательности $N$ ($1 \leq N \leq 1000$), затем каждый элемент последовательности в отдельной строке.
Программа должна напечатать только одно число — количество искомых элементов последовательности.
Пример работы программы:
Входные данные: 5, 162, 274, 882, 946, 4114.
Выходные данные: 3.
Решение по шагам
4 шагаСчитываем количество элементов последовательности $N$ и задаём счётчик подходящих чисел.
$$count = 0$$Каждое число переводим в шестнадцатеричную систему. Функция `hex()` добавляет префикс `0x`, поэтому первые два символа удаляем.
$$s = \mathrm{hex}(x)[2:]$$Проверяем, что запись состоит ровно из трёх символов и заканчивается символом `2`. Если оба условия выполнены, увеличиваем счётчик.
$$\mathrm{len}(s)=3 \land s[-1]='2'$$После обработки всех элементов выводим количество найденных чисел.
$$\mathrm{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] == '2':
count += 1
print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют количество десятичных цифр вместо количества символов в шестнадцатеричной записи.
Забывают удалить префикс `0x` из результата функции `hex()`.
Проверяют окончание записи в десятичной системе, а не в шестнадцатеричной.
Используют условие `len(s) >= 3` вместо требования ровно трёх символов.