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