Автомат получает на вход натуральное число N, не превышающее 10 000. По этому числу строится новое число R по следующим правилам.
1. Вычисляется число P — произведение всех ненулевых цифр числа N.
2. Вычисляется число S — разность максимальной и минимальной цифр в записи числа N.
3. Вычисляется T1: T1 = P + S.
4. Вычисляется T2: T2 = P × S + 1.
Новое число R получается в результате записи рядом без пробелов чисел T1 и T2 таким образом, чтобы они следовали слева направо в неубывающем порядке.
Пример. Исходное число N = 234.
P = 2 × 3 × 4 = 24
S = 4 − 2 = 2
T1 = 24 + 2 = 26
T2 = 24 × 2 + 1 = 49
Результат: R = 2649
Укажите наибольшее число N, при обработке которого автомат выдаст число R = 25127.
Приведём решение на языке Python.
for n in range(10000, 1, -1):
t = list(str(n))
t1 = [int(i) for i in t if i != '0']
t0 = [int(i) for i in t]
p = 1
for i in t1:
p *= i
s = int(max(t0)) - int(min(t0))
t1 = p + s
t2 = p * s + 1
r = str(min(t1,t2))+str(max(t1,t2))
if r == '25127':
print(n)
break
Ответ: 92.
Приведём решение Сергея Донец на PascalABC:
uses School;
begin
for var i:= 10000 downto 1 do begin
var d:=i.Digits;
var P:=d.Where(x->x<>0).Product;
var S:=d.Max-d.Min;
var T1:=P+S;
var T2:=P*S+1;
if T1.ToString+T2='25127'
then begin
Print(i);exit;
end;end;
end.

