Задания
Версия для печати и копирования в MS Word
Тип 5 № 87396
i

Ав­то­мат по­лу­ча­ет на вход на­ту­раль­ное число N, не пре­вы­ша­ю­щее 10 000. По этому числу стро­ит­ся новое число R по сле­ду­ю­щим пра­ви­лам.

1.  Вы­чис­ля­ет­ся число P  — про­из­ве­де­ние всех не­ну­ле­вых цифр числа N.

2.  Вы­чис­ля­ет­ся число M  — сумма мак­си­маль­ной и ми­ни­маль­ной цифр в за­пи­си числа N.

3.  Вы­чис­ля­ет­ся T1: T1  =  P + M.

4.  Вы­чис­ля­ет­ся T2: T2  =  P × M.

Новое число R по­лу­ча­ет­ся в ре­зуль­та­те за­пи­си рядом без про­бе­лов чисел T1 и T2 таким об­ра­зом, чтобы они сле­до­ва­ли слева на­пра­во в не­убы­ва­ю­щем по­ряд­ке.

При­мер. Ис­ход­ное число N  =  234

P  =  2 × 3 × 4  =  24

M  =  2 + 4  =  6

T1  =  24 + 6  =  30

T2  =  24 × 6  =  144

Ре­зуль­тат: R  =  30144

Ука­жи­те наи­боль­шее число N, при об­ра­бот­ке ко­то­ро­го ав­то­мат вы­даст число R  =  23126.

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние на языке Python.

for n in range(10000, 1, -1):

t = list(str(n))

tno0 = [int(i) for i in t if i != '0']

t0 = [int(i) for i in t]

p = 1

for i in tno0:

p *= i

m = int(max(t0)) + int(min(t0))

t1 = p + m

t2 = p * m

r = str(min(t1,t2))+str(max(t1,t2))

if r == '23126':

print(n)

break

 

 

Ответ: 72.

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

def f(n):

s=str(n)

mind,maxd,p=10,0,1

for c in s:

k=int(c)

mind=min(mind,k)

maxd=max(maxd,k)

if k!=0: p*=k

m=maxd+mind

t1=p+m

t2=p*m

return int(str(t1)+str(t2))

for n in range(100000,0,-1):

if f(n)==23126:

print(n)

break


Аналоги к заданию № 87396: 87423 Все