5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход четырехзначное число. По этому числу строится новое число по следующим правилам.
1. Складываются первая и вторая, а также третья и четвертая цифры исходного числа.
2. Полученные два числа записываются друг за другом в порядке неубывания (без разделителей).
Пример. Исходное число: . Суммы:
+
=
;
+
=
. Результат:
.
Укажите наименьшее число, в результате обработки которого автомат выдаст число .
Решение программой
В этой задаче алгоритм преобразует четырёхзначное число в новое число путём сложения первой и второй цифр, а также третьей и четвёртой, после чего полученные суммы записываются в порядке неубывания. Для программной реализации мы используем перебор всех четырёхзначных чисел от 1000 до 9999 включительно с помощью цикла for i in range(1000, 10000). Для удобного обращения к отдельным цифрам числа мы преобразуем его в строку. Так мы можем получить первую цифру как символ с индексом 0, вторую с индексом 1, третью с индексом 2 и четвёртую с индексом 3.
Далее мы вычисляем две суммы: first — это сумма первой и второй цифры, second — сумма третьей и четвёртой цифры. Чтобы сформировать результат в порядке неубывания, мы сравниваем эти суммы и на первую позицию ставим меньшую, на вторую — большую. Получившийся результат представляем как строку и сравниваем с заданным числом "613". Если результат совпадает, мы выводим исходное число и прерываем цикл, так как нам нужен наименьший вариант, а перебор идёт по возрастанию.
# Перебор всех четырёхзначных чисел от 1000 до 9999 включительно for i in range(1000, 10000): # Преобразуем число в строку для обращения к отдельным цифрам i = str(i) # Вычисляем сумму первой и второй цифры числа first = int(i[0]) + int(i[1]) # Вычисляем сумму третьей и четвёртой цифры числа second = int(i[2]) + int(i[3]) # Определяем порядок записи сумм: сначала меньшая, затем большая для неубывания if first > second: res = str(second) + str(first) else: res = str(first) + str(second) # Проверяем, совпадает ли получившийся результат с заданным числом ’613’ if res == ’613’: # Если совпадает, выводим исходное число и завершаем цикл, так как это наименьшее число print(i) break
Решение руками
Максимальное значение, которое можно получить при сложении двух цифр, — . Поэтому
разобьем результат работы алгоритма на числа, не превышающие
:
.
Теперь подберем наиболее выгодное для нас разложение числа . Наша задача подобрать такое
разложение, чтобы одно из чисел в сумме было минимальным:
Разложения, в которых участвуют числа, больше , нам не подходят.
Значит, — самое выгодное для нас разложение числа
. В остальных случаях мы не
сможем получить минимальное число.
Теперь подберем наиболее выгодное для нас разложение числа . Наша задача подобрать такое
разложение, чтобы одно из чисел в сумме было минимальным:
— самое выгодное для нас разложение числа
. В остальных случаях мы не сможем
получить минимальное число.
Поскольку в результате работы алгоритма нам необходимо получить , исходя из разложений,
получим ответ —
.
Проверим его: , запишем результаты в порядке неубывания:
.
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!