Решение: Подсчёт чисел в шестнадцатеричной системе
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру F.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число — количество искомых элементов последовательности.
Пример входных данных: 175, 287, 895, 959, 4127, 0. Пример выходных данных: 3.
Решение по шагам
4 шагаТрёхзначная запись в шестнадцатеричной системе начинается с числа $100_{16} = 256$ и заканчивается числом $FFF_{16} = 4095$.
$$256 \leq n \leq 4095$$Шестнадцатеричная цифра F имеет значение 15. Поэтому число оканчивается на F тогда и только тогда, когда остаток от его деления на 16 равен 15.
$$n \bmod 16 = 15$$Считываем числа до появления нуля. Для каждого числа, удовлетворяющего обоим условиям, увеличиваем счётчик.
Пример программы на Python:
$$count = 0\nwhile True:\n n = int(input())\n if n == 0:\n break\n if 256 <= n <= 4095 and n % 16 == 15:\n count += 1\nprint(count)$$Подсчитать числа в диапазоне от 256 до 4095, имеющие остаток 15 при делении на 16, и вывести полученный счётчик.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют только остаток от деления на 16 и забывают ограничение на трёхзначность.
Включают число 0 в обрабатываемую последовательность.
Используют диапазон до 4096 включительно, хотя $1000_{16}$ уже является четырёхзначным числом.
Проверяют последнюю десятичную цифру вместо последней шестнадцатеричной цифры.