Решение: Подсчёт шестнадцатеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру C. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность заканчивается числом 0, которое не входит в последовательность. Программа должна напечатать только одно число — количество искомых элементов.
Решение по шагам
5 шаговТрёхзначная запись в шестнадцатеричной системе начинается с разряда $16^2$ и заканчивается перед $16^3$, поэтому число должно удовлетворять неравенству $256 \leq n < 4096$.
$$16^2 \leq n < 16^3$$Шестнадцатеричная цифра C соответствует десятичному значению $12$. Поэтому последняя цифра записи равна C тогда и только тогда, когда остаток от деления числа на $16$ равен $12$.
$$n \bmod 16 = 12$$Считываем числа до появления нуля. Ноль является признаком окончания ввода и не проверяется.
Если оба условия выполнены, увеличиваем счётчик. После завершения ввода печатаем значение счётчика.
$$count = count + 1$$Один из вариантов реализации программы на Python:
$$count = 0\nwhile True:\n n = int(input())\n if n == 0:\n break\n if 256 <= n < 4096 and n % 16 == 12:\n count += 1\nprint(count)$$Программа должна считать числа $n$, для которых $256 \leq n < 4096$ и $n \bmod 16 = 12$, до первого нуля, а затем вывести количество таких чисел.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют только остаток от деления на 16 и не проверяют, что запись числа трёхзначная.
Считают число 0 элементом последовательности.
Используют условие $n \leq 4096$, хотя число $4096$ записывается как $1000_{16}$ и не является трёхзначным.
Считают, что цифре C соответствует остаток 13, хотя $\mathrm{C}_{16} = 12_{10}$.