Задание №5 — Анализ простейших алгоритмов
Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам:
1) Вычисляются суммы квадратов первой и второй, а также второй и третьей цифр исходного числа.
2) Полученные два числа записываются друг за другом в порядке невозрастания (без разделителей).
Пример. Исходное число: 621. Суммы квадратов цифр: Результат: 405.
Укажите наибольшее число, при обработке которого автомат выдаст число 9752.
Правильный ответ
946
Пояснение
Решение:
Автомат выводит две суммы квадратов цифр, записанные подряд в порядке невозрастания. Каждая сумма имеет вид , где и — цифры, поэтому она не превосходит .
Разобьём 9752 на два куска , каждый не больше 162. Вариант 9 и 752 отпадает (), вариант 975 и 2 отпадает (). Остаётся , .
Пусть исходное число — . Тогда и .
- 97 раскладывается на квадраты цифр единственным способом: , то есть цифры 4 и 9;
- 52 раскладывается единственным способом: , то есть цифры 4 и 6.
Общая цифра должна входить в обе пары, значит , откуда и .
def f(n):
d = [int(c) for c in str(n)]
a = d[0] ** 2 + d[1] ** 2
b = d[1] ** 2 + d[2] ** 2
return int(str(max(a, b)) + str(min(a, b)))
print(max(n for n in range(100, 1000) if f(n) == 9752))
Ответ: 946