Решение: Подсчёт чисел в восьмеричной системе
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления трёхзначна и оканчивается на цифру 4. Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0, которое не входит в последовательность. Программа должна напечатать только одно число — количество искомых элементов.
Решение по шагам
4 шагаТрёхзначная запись в восьмеричной системе начинается с числа $100_8 = 64_{10}$ и заканчивается числом $777_8 = 511_{10}$.
$$64 \leq n \leq 511$$Последняя цифра восьмеричной записи равна остатку от деления числа на 8. Поэтому для последней цифры 4 должно выполняться условие:
$$n \bmod 8 = 4$$Считываем последовательность до нулевого элемента и подсчитываем числа, удовлетворяющие обоим условиям.
Один из вариантов программы на Python:
$$count = 0\nwhile True:\n n = int(input())\n if n == 0:\n break\n if 64 <= n <= 511 and n % 8 == 4:\n count += 1\nprint(count)$$count = 0
while True:
n = int(input())
if n == 0:
break
if 64 <= n <= 511 and n % 8 == 4:
count += 1
print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют диапазон от 100 до 777, принимая эти числа за десятичные.
Используют условие n % 10 == 4 вместо проверки последней цифры в восьмеричной системе.
Включают число 0 в обрабатываемую последовательность.
Забывают вывести итоговое значение счётчика.