Решение: Подсчёт шестнадцатеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру 2. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0, которое не входит в последовательность. Программа должна напечатать только одно число — количество искомых элементов.
Пример работы программы приведён в таблице.
Решение по шагам
4 шагаВ шестнадцатеричной системе счисления трёхзначные числа начинаются с $16^2=256$ и заканчиваются перед $16^3=4096$. Поэтому число должно удовлетворять условию $256 \leq n < 4096$.
$$16^2 \leq n < 16^3$$Последняя шестнадцатеричная цифра числа определяется остатком от деления на $16$. Чтобы последняя цифра была равна 2, остаток должен быть равен 2.
$$n \mathbin{\%} 16 = 2$$Организуем цикл чтения чисел до появления нуля. Ноль является признаком окончания ввода и не проверяется.
Если оба условия выполнены, увеличиваем счётчик и после завершения цикла выводим его значение.
```python
count = 0
n = int(input())
while n != 0:
if 256 <= n < 4096 and n % 16 == 2:
count += 1
n = int(input())
print(count)
```
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют остаток от деления на 10 вместо остатка от деления на 16.
Включают число 4096 в диапазон трёхзначных шестнадцатеричных чисел.
Обрабатывают ноль как элемент последовательности.
Забывают считать числа, удовлетворяющие обоим условиям одновременно.