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

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

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

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

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

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

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