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