Задание №16 — Алгоритмы и программирование
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления трёхзначна и оканчивается на цифру 0. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число – количество искомых элементов последовательности.
Пример работы программы
Входные данные | Выходные данные |
32 160 472 504 576 0 | 3 |
Проверка решения с помощью ИИ доступна авторизованным пользователям
Решение.
Для решения этой задачи нам необходимо последовательно считывать числа до тех пор, пока не встретится 0, и для каждого числа проверять два условия, сформулированных в задании.
Шаг 1. Разбор условий задачи.
Нам нужно найти числа, которые в восьмеричной системе счисления:
1) Являются трёхзначными.
2) Оканчиваются на цифру .
Шаг 2. Перевод условий на язык математики.
Вспомним свойства систем счисления:
— Число является трёхзначным в системе с основанием , если оно находится в диапазоне от до . Для восьмеричной системы () это диапазон от до .
Вычислим границы: , а . Значит, число трёхзначно в восьмеричной системе, если .
— Последняя цифра числа в системе счисления с основанием — это остаток от деления этого числа на . Чтобы число в восьмеричной системе оканчивалось на , остаток от деления на должен быть равен . То есть число должно делиться на без остатка ().
Шаг 3. Алгоритм решения.
1. Создаём переменную-счётчик и присваиваем ей значение .
2. Организуем цикл чтения чисел до тех пор, пока введённое число не равно .
3. Внутри цикла проверяем: если () И () И (), то увеличиваем на .
4. После окончания цикла выводим значение .
Шаг 4. Проверка на примере.
— : меньше (двузначное в 8-ой системе: ) — не подходит.
— : и (остаток ) — подходит ().
— : и (остаток ) — подходит ().
— : и (остаток ) — подходит ().
— : больше (четырёхзначное в 8-ой системе: ) — не подходит.
Итого: числа.
Пример реализации на языке Python:
count = 0
x = int(input())
while x != 0:
if 64 <= x <= 511 and x % 8 == 0:
count += 1
x = int(input())
print(count)
Ответ: 3
Источник: ФИПИ