Задание №16 — Алгоритмы и программирование
Напишите программу, которая в последовательности натуральных десятичных чисел определяет сумму элементов, запись которых в системе счисления с основанием 7 оканчивается цифрой 6. Если среди входных данных таких элементов нет, программа должна вывести «NO».
Программа получает на вход натуральные десятичные числа,
не превышающие 30 000, каждое в отдельной строке. Количество введённых чисел неизвестно, их последовательность заканчивается числом 0 (0 – признак окончания ввода, в последовательность не входит).
Программа должна вывести одно число – сумму десятичных чисел (элементов последовательности), запись которых в 7-ричной системе счисления оканчивается цифрой 6, или «NO», если среди входных данных таких элементов нет.
Пример работы программы
Входные данные | Выходные данные |
20 13 9 28 12 0 | 33 |
Проверка решения с помощью ИИ доступна авторизованным пользователям
Решение.
Для решения этой задачи нам необходимо последовательно считывать числа до тех пор, пока не встретим 0. Для каждого числа нужно проверить условие: оканчивается ли его запись в системе счисления с основанием 7 на цифру 6.
1. Как проверить последнюю цифру в системе счисления?
В любой позиционной системе счисления с основанием , последняя цифра числа — это остаток от деления этого числа на . Следовательно, чтобы узнать, оканчивается ли десятичное число на 6 в 7-ричной системе, нам нужно проверить условие: .
2. Алгоритм действий:
— Создадим переменную s для накопления суммы и инициализируем её нулём: .
— Создадим логическую переменную или счётчик count, чтобы отследить, встретилось ли нам хотя бы одно подходящее число.
— В цикле считываем число . Если , прекращаем ввод.
— Если , то прибавляем к сумме и увеличиваем счётчик count.
— После окончания цикла проверяем: если count > 0, выводим сумму , иначе выводим «NO».
3. Разбор примера:
— Число 20: (так как ). Подходит. Сумма .
— Число 13: (так как ). Подходит. Сумма .
— Число 9: . Не подходит.
— Число 28: . Не подходит.
— Число 12: . Не подходит.
— Число 0: конец ввода.
Итоговая сумма: 33.
4. Пример реализации на языке Python:
s = 0
count = 0
x = int(input())
while x != 0:
if x % 7 == 6:
s += x
count += 1
x = int(input())
if count > 0:
print(s)
else:
print("NO")
Ответ: 33
Источник: ФИПИ