Алгоритм получает на вход натуральное число N ≥ 100 и строит по нему новое число R следующим образом:
1. Все тройки соседних цифр в десятичной записи N рассматриваются как трёхзначные числа (возможно, с ведущими нулями).
2. Из списка полученных на предыдущем шаге трёхзначных чисел выделяются наибольшее и наименьшее.
3. Результатом работы алгоритма становится разность найденных на предыдущем шаге двух чисел.
Пример. Дано число N = 20024. Алгоритм работает следующим образом:
1. В десятичной записи выделяем трёхзначные числа: 200, 002, 024.
2. Наибольшее из найденных чисел 200, наименьшее 002.
3. 200 − 002 = 198.
Результат работы алгоритма R = 198.
При каком наименьшем N в результате работы алгоритма получится R = 415?
Приведём решение на языке 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)) == 415:
otv.append(int(n))
print(min(otv))
Ответ: 1572.
Приведём решение Бориса Савельева на языке Python.
for i in range (1000,100000):
a=[]
s=str(i)
for j in range (0,len(s)-2):
a.append(int(s[j]+s[j+1]+s[j+2]))
if (max(a)-min(a)) == 415:
print(i)
break
Приведём решение Михаила Глинского на языке Python.
for x in range(100,10000):
s=str(x)
m=[]
while len(s)>2:
m.append(int(s[:3]))
s=s[1:]
if max(m)-min(m) == 415:
print(x)
break

