Решение: Подсчёт восьмеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления четырёхзначна и оканчивается на цифру 1. В ответе запишите количество искомых элементов.
Программа получает на вход натуральные числа. Количество введённых чисел неизвестно, но не превышает 1000. Последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность).
Программа должна напечатать только одно число — количество искомых элементов последовательности.
Пример работы программы:
Входные данные:
481
553
889
3025
4121
0
Выходные данные:
3
Решение по шагам
5 шаговЧетырёхзначное число в восьмеричной системе имеет первую цифру от 1 до 7, поэтому его значение находится в диапазоне от $8^3 = 512$ до $8^4 - 1 = 4095$.
Последняя цифра записи числа в восьмеричной системе равна остатку от деления этого числа на 8. Поэтому для окончания на цифру 1 необходимо условие $n \bmod 8 = 1$.
Считываем числа в цикле до появления 0. Ноль не обрабатываем и не учитываем.
Если число удовлетворяет обоим условиям, увеличиваем значение счётчика и после завершения ввода выводим счётчик.
Пример программы на Python:
$$count = 0\nwhile True:\n n = int(input())\n if n == 0:\n break\n if 512 <= n <= 4095 and n % 8 == 1:\n count += 1\nprint(count)$$На Python: count = 0; считывать числа до 0; при выполнении условий 512 ≤ n ≤ 4095 и n % 8 = 1 увеличивать count; вывести count.
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют количество цифр в десятичной записи вместо количества цифр в восьмеричной.
Используют диапазон от 512 до 4096 включительно; число 4096 уже имеет пятизначную восьмеричную запись.
Проверяют остаток от деления на 10 вместо остатка от деления на 8.
Учитывают число 0 как элемент последовательности.
Забывают вывести только одно итоговое число.