Решение: Подсчёт шестнадцатеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру D. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0; 0 не входит в последовательность. Программа должна напечатать только одно число — количество искомых элементов последовательности.
Решение по шагам
4 шагаЧисло имеет трёхзначную запись в шестнадцатеричной системе, если оно находится в диапазоне от $16^2$ до $16^3 - 1$.
$$256 \leq n \leq 4095$$Шестнадцатеричная цифра D имеет значение 13. Поэтому запись числа оканчивается на D, если остаток от деления числа на 16 равен 13.
$$n \bmod 16 = 13$$Считываем числа до появления нуля. Для каждого числа, удовлетворяющего обоим условиям, увеличиваем счётчик.
Для примера подходят числа 893, 957 и 4125: их шестнадцатеричные записи — 37D, 3BD и 101D.
```python
count = 0
while True:
n = int(input())
if n == 0:
break
if 256 <= n <= 4095 and n % 16 == 13:
count += 1
print(count)
```
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют последнюю десятичную цифру числа вместо остатка от деления на 16.
Используют верхнюю границу 4096, хотя число 4096 записывается как 1000 в шестнадцатеричной системе.
Учитывают число 0 как элемент последовательности.
Забывают вывести итоговый счётчик после окончания ввода.