Задание №16 — Алгоритмы и программирование
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру 3. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число – количество искомых элементов последовательности.
Пример работы программы
Входные данные | Выходные данные |
163 275 883 947 4115 0 | 3 |
Проверка решения с помощью ИИ доступна авторизованным пользователям
Решение.
Для решения этой задачи нам необходимо проанализировать каждое введённое число на соответствие двум условиям, связанным с его представлением в шестнадцатеричной системе счисления.
1. Условие трёхзначности в шестнадцатеричной системе.
Число является трёхзначным в системе счисления с основанием , если оно находится в диапазоне от минимального трёхзначного числа до максимального трёхзначного числа .
Переведём эти границы в десятичную систему:
Нижняя граница: .
Верхняя граница: .
Таким образом, число трёхзначно в шестнадцатеричной системе, если .
2. Условие окончания на цифру 3.
Последняя цифра числа в любой системе счисления — это остаток от деления этого числа на основание системы. Чтобы число в шестнадцатеричной системе оканчивалось на , остаток от его деления на должен быть равен .
Математически: .
3. Алгоритм решения:
— Создаём переменную-счётчик и обнуляем её.
— Организуем цикл чтения чисел до тех пор, пока не будет введён .
— Внутри цикла проверяем: если число , и , и , то увеличиваем на .
— После завершения цикла выводим значение .
Проверим пример из условия:
— : (не подходит).
— : , но (так как ). Подходит (1).
— : , и (так как ). Подходит (2).
— : , и (так как ). Подходит (3).
— : (не подходит).
Итого: .
Пример реализации на языке Python:
count = 0
x = int(input())
while x != 0:
if 256 <= x <= 4095 and x % 16 == 3:
count += 1
x = int(input())
print(count)
Ответ: 3
Источник: ФИПИ