5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход четырехзначное число. По этому числу строится новое число по следующим правилам.
1. Перемножаются первая и вторая, а также третья и четвертая цифры исходного числа.
2. Полученные два числа записываются друг за другом в порядке убывания (без разделителей).
Пример. Исходное число: 2491. Произведения: Результат: 98.
Укажите наименьшее число, в результате обработки которого автомат выдаст число 326.
Решение программой:
В этой задаче нам требуется найти наименьшее четырёхзначное число, которое после обработки по правилам автомата даст число 326. Алгоритм обработки состоит в том, что сначала мы берём исходное число и выделяем его отдельные цифры: первую, вторую, третью и четвёртую. Для удобства работы с цифрами мы преобразуем число в строку через str(k), чтобы можно было обращаться к каждому символу строки по индексу, а затем используем int(s[i]), чтобы преобразовать символ обратно в целое число для вычислений. После этого мы вычисляем произведение первой и второй цифры (int(s[0]) * int(s[1])) и произведение третьей и четвёртой цифры (int(s[2]) * int(s[3])).
Следующий этап — формирование нового числа. Поскольку правила требуют записывать произведения в порядке убывания, мы используем функцию max для большего произведения и min для меньшего. Чтобы соединить эти два числа в одно, мы преобразуем их в строки через str(...) и объединяем с помощью +, после чего снова преобразуем результат в целое число через int(...). Таким образом, мы получаем число, которое соответствует работе автомата: сначала идёт большее произведение, затем меньшее, без каких-либо разделителей.
Для поиска наименьшего числа, которое даёт результат 326, мы перебираем все четырёхзначные числа с помощью цикла for k in range(1000, 10000). Для каждого числа проверяем, совпадает ли сформированное число с требуемым результатом. Если совпадение найдено, мы сохраняем это число в переменную 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 == 326: # Проверяем, совпадает ли полученное число с требуемым результатом min_k = k # Сохраняем найденное число как наименьшее подходящее break # Прерываем цикл, так как наименьшее число найдено print(min_k) # Выводим наименьшее число, которое при обработке даёт 326
Решение руками:
Максимальное значение, которое можно получить при перемножении двух цифр, — 81. Поэтому разобьем результат работы алгоритма на числа, не превышающие 81, записанные в порядке убывания: 32|6.
Теперь подберем наиболее выгодное для нас разложение числа 32. Наша задача подобрать такое разложение, чтобы одно из чисел в произведении было минимальным:
Разложения, в которых участвуют цифры больше 9 нам не подходят.
Значит, — самое выгодное для нас разложение числа 32. В остальных случаях мы не
сможем получить минимальное число.
Теперь подберем наиболее выгодное для нас разложение числа 6. Наша задача подобрать такое разложение, чтобы одно из чисел в произведении было минимальным:
— самое выгодное для нас разложение числа 6. В остальных случаях мы не сможем
получить минимальное число.
Поскольку в результате работы алгоритма нам необходимо получить 326, исходя из разложений, получим ответ — 1648.
Проверим его: запишем результаты в порядке убывания: 326.
Специальные программы

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

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

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

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

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

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