Тема 5. Алгоритмы – анализ простейших алгоритмов

5.03 Действия над цифрами числа

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгоритмы – анализ простейших алгоритмов
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#7515

Автомат получает на вход четырехзначное число. По этому числу строится новое число по следующим правилам.

1. Перемножаются первая и вторая, а также третья и четвертая цифры исходного числа.

2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).

Пример. Исходное число: 2491. Произведения: 2 ⋅ 4 = 8;9 ⋅ 1 = 9.  Результат: 98.

Укажите наименьшее число, в результате обработки которого автомат выдаст число 274.

Показать ответ и решение

Решение программой:

В этой задаче нам требуется найти наименьшее четырёхзначное число, которое после обработки по правилам автомата даёт число 274. Алгоритм автомата состоит в том, что сначала мы берём исходное число и разделяем его на отдельные цифры: первую, вторую, третью и четвёртую. Для удобной работы с отдельными цифрами мы преобразуем число в строку через str(k), чтобы можно было обращаться к каждой цифре по индексу, а затем используем int(s[i]), чтобы превратить символ цифры обратно в целое число для вычислений. Далее мы перемножаем первую и вторую цифру (int(s[0]) * int(s[1])) и третью и четвёртую (int(s[2]) * int(s[3])), получая два произведения.

Следующий шаг — формирование нового числа M. Поскольку правила требуют записывать результаты в порядке убывания, мы используем функцию max для большего произведения и min для меньшего. Для получения итогового числа мы преобразуем эти произведения в строки и соединяем их через str(max(...)) + str(min(...)), после чего получаем целое число через int(...). Это полностью повторяет логику работы автомата: сначала вычисляются произведения пар цифр, а затем формируется новое число в нужном порядке.

Чтобы найти наименьшее число, которое при обработке даёт результат 274, мы перебираем все четырёхзначные числа с помощью цикла for k in range(1000, 10000). Для каждого числа проверяем, совпадает ли полученное число M с 274. Если совпадение есть, мы сохраняем число в переменную min_k и сразу прерываем цикл через break, так как нас интересует именно наименьшее число. После завершения цикла выводим найденное число через print(min_k).

min_k = None  # Инициализируем переменную для хранения наименьшего подходящего числа
for k in range(1000, 10000):  # Перебираем все четырёхзначные числа от 1000 до 9999 включительно
    s = str(k)  # Преобразуем число в строку, чтобы обращаться к отдельным цифрам по индексам
    first_prod = int(s[0]) * int(s[1])  # Перемножаем первую и вторую цифры исходного числа
    second_prod = int(s[2]) * int(s[3])  # Перемножаем третью и четвёртую цифры исходного числа
    result = int(str(max(first_prod, second_prod)) + str(min(first_prod, second_prod)))
    # Формируем новое число: сначала большее произведение, затем меньшее, без разделителей
    if result == 274:  # Проверяем, совпадает ли полученное число с требуемым результатом
        min_k = k  # Сохраняем найденное число как наименьшее подходящее
        break  # Прерываем цикл, так как наименьшее число найдено
print(min_k)  # Выводим наименьшее число, которое при обработке даёт 274


Решение руками:

Максимальное значение, которое можно получить при перемножении двух цифр, — 81. Поэтому разобьем результат работы алгоритма на числа, не превышающие 81, записанные в порядке убывания: 27|4.

Теперь подберем наиболее выгодное для нас разложение числа 27. Наша задача подобрать такое разложение, чтобы одно из чисел в произведении было минимальным:

9 ⋅ 3 = 27  — самое выгодное для нас разложение числа 27. В остальных случаях мы не сможем получить минимальное число.

Теперь подберем наиболее выгодное для нас разложение числа 4. Наша задача подобрать такое разложение, чтобы одно из чисел в произведении было минимальным:

4 ⋅ 1 = 4  — самое выгодное для нас разложение числа 4. В остальных случаях мы не сможем получить минимальное число.

Поскольку в результате работы алгоритма нам необходимо получить 274, исходя из разложений, получим ответ — 1439.

Проверим его: 1 ⋅ 4 = 4, 3 ⋅ 9 = 27,  запишем результаты в порядке убывания: 274.

Ответ: 1439

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!