Автомат получает на вход пятизначное число. По этому числу строится новое число по таким правилам:
1. Складываются квадраты цифр, стоящих на нечетных позициях;
2. Складываются квадраты цифр, стоящих на четных позициях;
3. Затем в порядке возрастания записываются эти суммы.
Укажите наибольшее число, при вводе которого автомат выдает число 5085.
Решение аналитически:
Сумма квадратов чисел принадлежит промежутку [0,243], а сумма квадратов
чисел промежутку [0,162]. В соответствие с этими правилами число разбивается на число
и
. Раскладывая данные числа на суммы квадратов, получаем набор цифр для исходного числа {0,1,2,7,9}. Если рассмотрим расположение позиций начиная с единицы, то на нечетных местах можно расположить числа {9, 2, 0}, а на четных позициях числа {7, 1}. Т.е. число
. Если сложить квадраты чисел, то получим суммы как раз:
и
соответственно. Так как у нас суммы располагаются по возрастанию, тогда как раз выходит
. И это максимальное расположение.
Решение программой:
for i in reversed(range(10 ** 4, 10 ** 5)):
s = str(i)
sum1 = int(s[0]) ** 2 + int(s[2]) ** 2 + int(s[4]) ** 2
sum2 = int(s[1]) ** 2 + int(s[3]) ** 2
k = str(min(sum1, sum2)) + str(max(sum1, sum2))
if k == ’5085’:
print(i)
break