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

Ал­го­ритм по­лу­ча­ет на вход на­ту­раль­ное число N ≥ 100 и стро­ит по нему новое число R сле­ду­ю­щим об­ра­зом:

1.  Все трой­ки со­сед­них цифр в де­ся­тич­ной за­пи­си N рас­смат­ри­ва­ют­ся как трёхзнач­ные числа (воз­мож­но, с ве­ду­щи­ми ну­ля­ми).

2.  Из спис­ка по­лу­чен­ных на преды­ду­щем шаге трёхзнач­ных чисел вы­де­ля­ют­ся наи­боль­шее и наи­мень­шее.

3.  Ре­зуль­та­том ра­бо­ты ал­го­рит­ма ста­но­вит­ся раз­ность най­ден­ных на преды­ду­щем шаге двух чисел.

 

При­мер. Дано число N  =  20024. Ал­го­ритм ра­бо­та­ет сле­ду­ю­щим об­ра­зом:

1.  В де­ся­тич­ной за­пи­си вы­де­ля­ем трёхзнач­ные числа: 200, 002, 024.

2.  Наи­боль­шее из най­ден­ных чисел  — 200, наи­мень­шее  — 002.

3.  200 − 002  =  198.

Ре­зуль­тат ра­бо­ты ал­го­рит­ма R  =  198.

При каком наи­мень­шем N в ре­зуль­та­те ра­бо­ты ал­го­рит­ма по­лу­чит­ся R  =  623?

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

Ре­ше­ние.

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

otv = []

for n in range(100,100000):

n = str(n)

troiki = []

for i in range(len(n)-2):

troiki.append(n[i] + n[i+1] + n[i+2])

k = ''.join(troiki)

r = len(k)-len(n)

if r < 0:

troiki.append(n[r:])

result = [int(item) for item in troiki]

if (max(result)-min(result)) == 623:

otv.append(int(n))

print(min(otv))

 

Ответ: 1803.

 

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

for n in range (1000,10000):

s=str(n)

n1=s[0]+s[1]+s[2]

n2=s[1]+s[2]+s[3]

if (max(int(n1),int(n2))-min(int(n1),int(n2)))==623:

print(n)

break

 

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

for N in range(100,10000):

m = []

s = str(N)

while len(s) >= 3:

m.append(int(s[:3]))

s = s[1:]

R = max(m) - min(m)

if R == 623:

print(N)

break


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