Шешімі: Подсчёт восьмеричных чисел
Напишите программу подсчёта количества элементов последовательности натуральных чисел, запись которых в восьмеричной системе счисления трёхзначна и оканчивается на цифру 6.
На вход программе сначала подаётся количество элементов последовательности $N$ ($1 \leq N \leq 1000$), затем каждый элемент последовательности в отдельной строке.
Программа должна напечатать только одно число — количество искомых элементов последовательности.
Пример входных данных: 5, 38, 166, 478, 510, 582. Результат работы программы: 3.
Шешімін қадамдап көрсету
4 қадамСчитываем количество элементов последовательности и создаём счётчик подходящих чисел.
$$count = 0$$Для каждого числа получаем его запись в восьмеричной системе. В строке, возвращаемой функцией oct(), первые два символа — 0o, поэтому трёхзначной записи соответствует длина строки 5.
Проверяем, что последний символ восьмеричной записи равен 6. Если оба условия выполнены, увеличиваем счётчик.
Выводим количество найденных элементов.
$$print(count)$$count = 0
n = int(input())
for _ in range(n):
x = int(input())
s = oct(x)
if len(s) == 5 and s[-1] == '6':
count += 1
print(count)
Бұл жауап талдау нәтижесінде алынды, бірақ банктің ресми кілтімен тексерілген жоқ — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют количество цифр в десятичной жазбалар вместо восьмеричной.
Забывают, что функция oct() добавляет префикс 0o.
Проверяют последнюю цифру десятичного числа, а не последнюю цифру его восьмеричной жазбалар.
Используют условие len(s) == 3, не учитывая префикс 0o.