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

Ав­то­мат по­лу­ча­ет на вход четырёхзнач­ное число (число не может на­чи­нать­ся с нуля). По этому числу стро­ит­ся новое число по сле­ду­ю­щим пра­ви­лам.

1.  Скла­ды­ва­ют­ся от­дель­но пер­вая и вто­рая, вто­рая и тре­тья, тре­тья и четвёртая цифры за­дан­но­го числа.

2.  Наи­мень­шая из по­лу­чен­ных трёх сумм уда­ля­ет­ся.

3.  Остав­ши­е­ся две суммы за­пи­сы­ва­ют­ся друг за дру­гом в по­ряд­ке не­убы­ва­ния без раз­де­ли­те­лей.

 

При­мер. Ис­ход­ное число: 1982. Суммы: 1 + 9  =  10, 9 + 8  =  17, 8 + 2  =  10. Уда­ля­ет­ся 10. Ре­зуль­тат: 1017.

Ука­жи­те наи­боль­шее число, при об­ра­бот­ке ко­то­ро­го ав­то­мат выдаёт ре­зуль­тат 1315.

 

При­ме­ча­ние. Если мень­шие из сумм равны, то от­бра­сы­ва­ют одну из них.

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

Ре­ше­ние.

За­ме­тим, что 1315  — это числа 13 и 15. Чтобы по­лу­чить наи­боль­шее число, возьмём тре­тью сумму мак­си­маль­но воз­мож­ную  — 13. Мак­си­маль­ная сумма из трёх  — 15. Её и разобьём, по­ста­вив в на­ча­ло наи­боль­шее сла­га­е­мое. По­лу­ча­ем 96XY. Остаётся всего 2 суммы по 13. Ис­хо­дя из этого, на­хо­дим ис­ход­ное число  — 9676.

 

При­ме­ча­ние 1. Числа 9649, 9658 и 9667 не под­хо­дят, по­сколь­ку не­об­хо­ди­мо найти наи­боль­шее число.

При­ме­ча­ние 2. Для числа 9676 суммы цифр 15, 13, 13. Одну из них от­бра­сы­ва­ют: min{13; 13}=13. Хотя ав­то­рам сле­до­ва­ло бы явно на­пи­сать в усло­вии, что если мень­шие из сумм равны, то от­бра­сы­ва­ют одну из них.

 

Ответ: 9676.

 

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

for i in range(9999, 1001, -1):

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 == '1315':

print(i)

break

 

При­ведём ре­ше­ние Ми­ха­и­ла Глин­ско­го на языке Python.

for i in range(9999,1001,-1):

s = str(i)

m = [int(s[0])+int(s[1]),int(s[1])+int(s[2]),int(s[2])+int(s[3])]

m.sort()

if m[1] == 13 and m[2] == 15:

print(i)

break


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

Раздел кодификатора ФИПИ: 1.6.3 По­стро­е­ние ал­го­рит­мов и прак­ти­че­ские вы­чис­ле­ния