16. Программирование: #294634
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру $1$. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает $1000$. Последовательность чисел заканчивается числом $0$ ($0$ – признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число – количество искомых элементов последовательности.
Пример работы программы
| Входные данные | Выходные данные |
|---|---|
| 481 553 889 3025 4121 0 | 3 |
Четырёхзначное число в восьмеричной системе счисления находится в диапазоне от $1000_8$ до $7777_8$. В десятичной системе это числа от $512$ до $4095$:
$1000_8=512$
$7777_8=4095$.
Если запись числа в восьмеричной системе счисления оканчивается цифрой $1$, то при делении этого числа на $8$ остаток должен быть равен $1$.
Значит, для каждого введённого числа достаточно проверить два условия: $512 \leq x \leq 4095$ и $x \%\ 8 == 1$. Будем увеличивать счётчик на $1$, если оба условия выполняются. Ввод чисел продолжается до тех пор, пока не встретится число $0$.
count = 0
x = int(input())
while x != 0:
if 512 <= x <= 4095 and x % 8 == 1:
count += 1
x = int(input())
print(count)
Для приведённого примера условию соответствуют числа $553$, $889$ и $3025$:
$553=1051_8$
$889=1571_8$
$3025=5721_8$.
Число $481=741_8$ является трёхзначным, а $4121=10031_8$ — пятизначным, поэтому они не подходят.
Таким образом, программа выведет: $3$.