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