Шешімі: Подсчёт шестнадцатеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру E. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 — признаком окончания ввода, который не входит в последовательность. Программа должна напечатать только одно число — количество искомых элементов.
Пример: для последовательности 174, 286, 894, 958, 412 ответ равен 3.
Шешімін қадамдап көрсету
5 қадамТрёхзначные числа в шестнадцатеричной системе находятся в диапазоне от $16^2 = 256$ до $16^3 - 1 = 4095$.
$$256 \leq n \leq 4095$$Последняя цифра E имеет значение 14 в шестнадцатеричной системе, поэтому проверяем остаток от деления числа на 16.
$$n \bmod 16 = 14$$Считываем числа до появления нуля. Если оба условия выполнены, увеличиваем счётчик.
$$count := count + 1$$После завершения ввода выводим значение счётчика. Например, числа 286, 894 и 958 имеют трёхзначную шестнадцатеричную запись, оканчивающуюся на E: $11E$, $37E$ и $3BE$.
Один из возможных нұсқа программы на Python:
$$count = 0\nwhile True:\n n = int(input())\n if n == 0:\n break\n if 256 <= n <= 4095 and n % 16 == 14:\n count += 1\nprint(count)$$count = 0; считывать числа до 0; считать числа из диапазона 256–4095 с остатком 14 при делении на 16; вывести count.
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют только последнюю цифру, но не проверяют трёхзначность шестнадцатеричной жазбалар.
Считают число 0 элементом последовательности.
Используют остаток 15 вместо 14 для цифры E.
Задают верхнюю границу диапазона как 4096, хотя число 4096 уже имеет четырёхзначную запись в шестнадцатеричной системе.