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