5.03 Действия над цифрами числа
Ошибка.
Попробуйте повторить позже
Автомат получает на вход пятизначное число. По этому числу строится новое число по таким правилам:
1. Складываются квадраты цифр, стоящих на нечетных позициях;
2. Складываются квадраты цифр, стоящих на четных позициях;
3. Затем в порядке возрастания записываются эти суммы.
Укажите наименьшее число, при вводе которого автомат выдает число 4141.
Программное решение:
В этой задаче мы имеем автомат, который получает пятизначное число и формирует новое число на основе суммы квадратов цифр на нечётных и чётных позициях. Для того чтобы «перевести» этот алгоритм на Python, мы сначала создаём цикл for, который перебирает все пятизначные числа от 10000 до 99999. Каждое число преобразуем в строку n = str(i), чтобы иметь возможность обращаться к отдельным цифрам по индексу. Далее с помощью генератора списков и функции sum вычисляем сумму квадратов цифр на нечётных позициях: [int(n[j]) ** 2 for j in range(len(n)) if j
После получения этих сумм (nechet и chet) формируем новое число в порядке возрастания сумм. Для этого проверяем, какая из сумм больше, и соединяем их в строку в порядке от меньшей к большей: если nechet > chet, то ans = str(chet) + str(nechet), иначе наоборот. Преобразуем результат в число и проверяем, совпадает ли оно с требуемым числом 4141. Если условие выполняется, выводим текущее число и прерываем цикл с помощью break, так как нас интересует наименьшее число, удовлетворяющее условию.
# Перебор всех пятизначных чисел for i in range(10000, 100000): # Преобразуем число в строку, чтобы работать с его цифрами по индексам n = str(i) # Суммируем квадраты цифр на нечётных позициях (индексы 0,2,4) nechet = sum([int(n[j]) ** 2 for j in range(len(n)) if j % 2 == 0]) # Суммируем квадраты цифр на чётных позициях (индексы 1,3) chet = sum([int(n[j]) ** 2 for j in range(len(n)) if j % 2 != 0]) # Формируем новое число в порядке возрастания сумм if nechet > chet: ans = str(chet) + str(nechet) else: ans = str(nechet) + str(chet) # Проверяем, совпадает ли сформированное число с требуемым if ans == ’4141’: # Выводим найденное число print(i) # Завершаем цикл, так как наименьшее число найдено break
Аналитическое решение:
Сумма квадратов 3 чисел принадлежит промежутку [0,243], а сумма квадратов 2 чисел промежутку [0,162]. В соответствие с этими правилами число разбивается на число 41 и 41. Раскладывая данные числа на суммы квадратов получаем набор цифр для исходного числа {1,2,4,5,6}, при этом цифры {4,5} находятся на четных позициях, и цифры {1,2,6} на нечетных. Тогда минимальное число есть 14256.
Специальные программы

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

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

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

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

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

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