Решение: Подсчёт цифры в семеричной системе
Напишите программу, которая в последовательности натуральных десятичных чисел определяет количество элементов, запись которых в системе счисления с основанием 7 оканчивается цифрой 2. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход в первой строке натуральное число $N$ ($3 \leq N \leq 10\,000$), затем $N$ натуральных чисел, не превышающих 30 000, каждое в отдельной строке.
Программа должна вывести одно число — количество десятичных чисел, запись которых в 7-ричной системе счисления оканчивается цифрой 2, или «NO», если среди входных данных таких элементов нет.
Пример работы программы:
Входные данные:
5
37
22
16
25
42
Выходные данные:
2
Решение по шагам
4 шагаПоследняя цифра записи натурального числа в системе счисления с основанием 7 определяется остатком от деления этого числа на 7.
$$x \bmod 7 = 2$$Считываем количество чисел $N$ и последовательно обрабатываем все элементы, не сохраняя их. Если остаток от деления очередного числа на 7 равен 2, увеличиваем счётчик.
$$count = count + 1$$После обработки последовательности проверяем значение счётчика. При отсутствии подходящих чисел выводим «NO», иначе выводим найденное количество.
$$count = 0 \Rightarrow \text{NO}$$Один из возможных вариантов программы на Python:
$$n = int(input())\ncount = 0\nfor _ in range(n):\n x = int(input())\n if x % 7 == 2:\n count += 1\nif count == 0:\n print('NO')\nelse:\n print(count)$$n = int(input())
count = 0
for _ in range(n):
x = int(input())
if x % 7 == 2:
count += 1
if count == 0:
print('NO')
else:
print(count)
Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.
Где здесь ошибаются
Проверяют делимость числа на 7 вместо проверки остатка, равного 2.
Пытаются сравнивать последнюю цифру десятичной записи числа с 2.
Выводят 0 вместо «NO», когда подходящих чисел нет.
Обрабатывают не все $N$ чисел.