Задание №16 — Алгоритмы и программирование
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в шестнадцатеричной системе счисления трёхзначна и оканчивается на цифру 0. В ответе запишите количество искомых элементов.
На вход программе сначала подаётся количество элементов последовательности N (1 ≤ N ≤ 1000), затем каждый элемент последовательности в отдельной строке.
Программа должна напечатать только одно число – количество искомых элементов последовательности.
Пример работы программы
Входные данные | Выходные данные |
5 160 272 880 944 4112 | 3 |
Проверка решения с помощью ИИ доступна авторизованным пользователям
Решение.
Для решения этой задачи нам необходимо проанализировать каждое число из последовательности и проверить, удовлетворяет ли оно двум условиям одновременно:
1. Запись числа в шестнадцатеричной системе счисления должна быть трёхзначной.
2. Запись числа в шестнадцатеричной системе счисления должна оканчиваться на цифру .
Разберём эти условия подробнее:
Шаг 1. Условие трёхзначности в шестнадцатеричной системе.
Минимальное трёхзначное число в шестнадцатеричной системе — это . Переведём его в десятичную систему:
.
Максимальное трёхзначное число в шестнадцатеричной системе — это . Следующее за ним число — , которое является минимальным четырёхзначным. Переведём его:
.
Следовательно, число является трёхзначным в шестнадцатеричной системе, если оно находится в диапазоне: .
Шаг 2. Условие окончания на цифру 0.
Последняя цифра числа в любой системе счисления с основанием — это остаток от деления этого числа на .
Чтобы число в шестнадцатеричной системе оканчивалось на , остаток от его деления на должен быть равен . То есть число должно нацело делиться на : .
Шаг 3. Проверка примера.
Рассмотрим числа из примера:
1) : . Условие трёхзначности не выполнено.
2) : (да) и (да, так как ). Подходит.
3) : (да) и (да, так как ). Подходит.
4) : (да) и (да, так как ). Подходит.
5) : . Условие трёхзначности не выполнено.
Итого: числа.
Алгоритм на языке Python:
n = int(input())
count = 0
for _ in range(n):
x = int(input())
if 256 <= x <= 4095 and x % 16 == 0:
count += 1
print(count)
Ответ: 3
Источник: ФИПИ