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