Автомат получает на вход четырёхзначное число. По этому числу строится новое число по следующим правилам.
1. Складываются отдельно первая и вторая цифры, вторая и третья цифры, а также третья и четвёртая цифры.
2. Из полученных трёх чисел выбираются два наибольших и записываются друг за другом в порядке неубывания без разделителей.
Пример. Исходное число: 9575. Суммы: 9 + 5 = 14; 5 + 7 = 12; 7 + 5 = 12. Наибольшие суммы: 14, 12.
Укажите наименьшее число, при обработке которого автомат выдаёт
Представим числа 15 и 17 в виде сумм, так чтобы одно из слагаемых было как можно меньше, используя только числа от нуля до девяти: 15 = 6 + 9, 17 = 8 + 9. Чтобы построить наименьшее исходное число, нужно по возможности ставить большие числа в младших разрядах, а маленькие — в старших. Наименьшее число, удовлетворяющее условию: 1698.
Ответ: 1698.
Приведём другое решение на языке Python.
for i in range(1000, 10000):
s = str(i)
k1 = int(s[0]) + int(s[1])
k2 = int(s[1]) + int(s[2])
k3 = int(s[2]) + int(s[3])
first = str(k1 + k2 + k3 - max(k1, k2, k3) - min(k1, k2, k3))
second = str(max(k1, k2, k3))
s1 = first + second
if s1 == '1517':
print(i)
break
Приведём решение Сергея Донец на PascalABC.NET:
uses School;
begin
var tt := 1517;
for var i :=1000 to 9999 do begin
var (a,b,c,d) := i.Digits;
var (s1, s2, s3) := [a+b, b+c, c+d].sorted;
var res := s2 < s3 ? s2.ToString+s3 : s3.ToString+s2;
if res.ToInteger = tt then begin
Print(i);
break;
end;
end;
end.

