5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход пятизначное число. По этому числу строится новое число по таким правилам:
1. Складываются квадраты цифр, стоящих на нечетных позициях;
2. Складываются квадраты цифр, стоящих на четных позициях;
3. Затем в порядке возрастания записываются эти суммы.
Укажите наибольшее число, при вводе которого автомат выдает число 182.
Сумма квадратов 3 чисел принадлежит промежутку [0,243], а сумма квадратов 2 чисел промежутку [0,162]. В соответствие с этими правилами число разбивается на число 1 и 82. Раскладывая данные числа на суммы квадратов, получаем набор цифр для исходного числа {0,0,1,1,9}, при этом цифры {0,1} находятся на четных позициях, и цифры {0,1,9} на нечетных. Тогда максимальное число есть 91100.
Решение программой:
В этой задаче нам нужно найти наибольшее пятизначное число, которое после обработки автоматом даёт результат 182. Алгоритм работы автомата предусматривает сначала вычисление суммы квадратов цифр, стоящих на нечётных позициях, затем суммы квадратов цифр на чётных позициях, и запись этих двух сумм в порядке возрастания. Чтобы «перевести» этот алгоритм на язык Python, мы начинаем с перебора всех пятизначных чисел от 10000 до 99999 включительно с помощью цикла for. Для каждого числа мы сначала преобразуем его в строку, чтобы можно было легко обращаться к отдельным цифрам по индексам, и сразу создаём список целых чисел nums с помощью map(int, str(i)). Далее, согласно правилам, вычисляем сумму квадратов цифр на нечётных позициях (индексы 0, 2, 4 в Python) и сохраняем её в переменной k1, а сумму квадратов цифр на чётных позициях (индексы 1, 3) сохраняем в переменной k2. После этого формируем результат, записывая меньшую из сумм в начало строки, а большую — в конец, используя функции min и max и конкатенацию строк, и сохраняем полученную строку в переменной res. Если эта строка совпадает с целевым значением ’182’, добавляем текущее число в список a. После окончания перебора всех чисел мы находим наибольшее число из списка a с помощью функции max и выводим его, так как именно оно будет наибольшим пятизначным числом, которое при обработке даёт нужный результат.
a = [] # Создаём пустой список для хранения чисел, дающих нужный результат for i in range(10000, 100000): # Перебираем все пятизначные числа от 10000 до 99999 включительно s = str(i) # Преобразуем число в строку для удобного доступа к его цифрам k1 = int(s[0])**2 + int(s[2])**2 + int(s[4])**2 # Суммируем квадраты цифр на нечётных позициях (индексы 0, 2, 4) k2 = int(s[1])**2 + int(s[3])**2 # Суммируем квадраты цифр на чётных позициях (индексы 1, 3) first = min(k1, k2) # Определяем меньшую сумму second = max(k1, k2) # Определяем большую сумму if str(first) + str(second) == ’182’: # Проверяем, совпадает ли результат с целевым значением a.append(i) # Если совпадает, добавляем число в список print(max(a)) # Выводим наибольшее число из списка, удовлетворяющее условию
Специальные программы

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

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

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

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

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

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