Задание №16 — Алгоритмы и программирование
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру 9. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число – количество искомых элементов последовательности.
Пример работы программы
Входные данные | Выходные данные |
169 281 889 953 4121 0 | 3 |
Проверка решения с помощью ИИ доступна авторизованным пользователям
Решение.
Разберём задачу по шагам, чтобы понять, как проверить каждое введённое число на соответствие условиям.
1. Анализ условия "трёхзначное число в шестнадцатеричной системе".
В шестнадцатеричной системе счисления (основание 16) числа записываются с помощью цифр от 0 до 9 и букв A-F.
Минимальное трёхзначное число в этой системе — это . Переведём его в десятичную систему: .
Максимальное трёхзначное число — это . Переведём его в десятичную систему: .
Следовательно, число является трёхзначным в шестнадцатеричной системе, если оно находится в диапазоне: .
2. Анализ условия "оканчивается на цифру 9 в шестнадцатеричной системе".
Последняя цифра числа в любой системе счисления — это остаток от деления этого числа на основание системы.
Чтобы число в шестнадцатеричной системе оканчивалось на 9, остаток от его деления на 16 должен быть равен 9.
Математически это записывается так: .
3. Алгоритм решения:
— Создадим переменную-счётчик count и обнулим её.
— Будем считывать числа в цикле до тех пор, пока не встретим 0.
— Для каждого считанного числа проверим два условия одновременно: оно должно быть в диапазоне от 256 до 4095 включительно И остаток от его деления на 16 должен быть равен 9.
— Если оба условия выполняются, увеличим счётчик на 1.
— В конце выведем значение счётчика.
4. Пример реализации на языке Python:
count = 0
x = int(input())
while x != 0:
if 256 <= x <= 4095 and x % 16 == 9:
count += 1
x = int(input())
print(count)
5. Проверка на примере из условия:
— Число 169: — Ложь. (Не подходит)
— Число 281: — Истина. Проверяем остаток: (так как ) — Истина. (Подходит, count = 1)
— Число 889: — Истина. Проверяем остаток: (так как ) — Истина. (Подходит, count = 2)
— Число 953: — Истина. Проверяем остаток: (так как ) — Истина. (Подходит, count = 3)
— Число 4121: — Ложь. (Не подходит)
Итого: 3.
Ответ: 3
Источник: ФИПИ