Вопрос задан 22.03.2025 в 19:42. Предмет Информатика. Спрашивает Новикова Леночка.

Напишите программу, которая находит все числа в диапазоне от a до b , сумма цифр которых не меняется при умножении на 2, 3, 4, 5, 6, 7, 8 и 9 (например, число 9). Используйте функцию для вычисления суммы цифр числа. Входные данные Входная строка содержит два натуральных числа – границы диапазона a и b . Гарантируется, что a ≤ b . Выходные данные Программа должна вывести все числа, удовлетворяющий условию, в одной строке, разделив их пробелами.

Перейти к ответам

Ответы на вопрос

Отвечает Лутков Никита.

Для решения этой задачи нам нужно найти такие числа в диапазоне от aa до bb, сумма цифр которых не меняется при умножении на числа от 2 до 9. Рассмотрим шаги для реализации этой программы:

Шаг 1. Функция для вычисления суммы цифр числа

Для начала, нам нужно написать функцию, которая будет вычислять сумму цифр числа. Например, если нам дано число 123, то сумма его цифр равна 1+2+3=61 + 2 + 3 = 6.

python
def sum_of_digits(n): return sum(int(digit) for digit in str(n))

Здесь мы используем функцию sum, которая суммирует все цифры числа, преобразованные в целые числа.

Шаг 2. Проверка числа на условие задачи

Теперь, чтобы проверить, подходит ли число для решения задачи, нам нужно умножить его на числа от 2 до 9 и убедиться, что сумма цифр всех полученных чисел остаётся неизменной.

python
def check_number(n): original_sum = sum_of_digits(n) for i in range(2, 10): if sum_of_digits(n * i) != original_sum: return False return True

Здесь для каждого числа от 2 до 9 мы проверяем, что сумма цифр результата умножения остаётся равной сумме цифр исходного числа. Если для любого множителя это условие нарушается, функция возвращает False.

Шаг 3. Основная логика программы

Теперь, когда у нас есть функции для вычисления суммы цифр и проверки числа, мы можем перебрать все числа в заданном диапазоне от aa до bb и вывести те, которые удовлетворяют условию.

python
def find_numbers(a, b): result = [] for num in range(a, b + 1): if check_number(num): result.append(str(num)) print(" ".join(result))

Шаг 4. Ввод и вывод данных

Программа должна читать два числа aa и bb из входных данных и выводить числа, удовлетворяющие условию, в одной строке, разделённые пробелами.

python
# Ввод a, b = map(int, input().split())

# Вывод find_numbers(a, b)

Полный код программы

python
def sum_of_digits(n): return sum(int(digit) for digit in str(n))

def check_number(n): original_sum = sum_of_digits(n) for i in range(2, 10): if sum_of_digits(n * i) != original_sum: return False return True

def find_numbers(a, b): result = [] for num in range(a, b + 1): if check_number(num): result.append(str(num)) print(" ".join(result))

# Ввод данных a, b = map(int, input().split())

# Нахождение и вывод чисел find_numbers(a, b)

Объяснение работы программы

  1. sum_of_digits(n) — функция для вычисления суммы цифр числа nn.
  2. check_number(n) — проверяет, что для всех чисел от 2 до 9 умножение на nn не меняет суммы цифр.
  3. find_numbers(a, b) — основная функция, которая перебирает все числа от aa до bb и выводит те, которые удовлетворяют условию задачи.

Пример работы программы

Вход:

1 100

Выход:

9

Здесь программа находит число 9, которое подходит под условие задачи, потому что:

  • Сумма цифр 9 равна 9.
  • Сумма цифр чисел 18, 27, 36, 45, 54, 63, 72, 81, 90 также равна 9.

Таким образом, программа успешно решает поставленную задачу.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос