Чтобы число получилось максимальным, нужно поменять самое большое вычитаемое число и самое маленькое прибавляемое. То есть 2015 и 2.
Сначала легче посчитать исходное значение выражение.
Если разбить выражение на пары (2016-2015) + (2014-2013) ... То можно заметить, что значение каждой скобки равно 1. Таких пар будет 2016 : 2 = 1008 1008*1 = 1008
В двух парах, а именно (2016-2015) и (2-1) произойдут изменения. Уберём их из общего выражения на время. Без этих 4-х чисел значение выражения равно 1006.
2016−2015+2014−2013+…+2−1 = 1006 + (2016 - 2015) + (2 - 1) Теперь поменяем местами 2015 и 2, найдём значение выражения:
# Код на ruby 2.2.3p173 def zadanie(line, time) line = line.gsub(/[^MD]/, "") time.times { |i| k = 0 while k < line.size - 1 do if line[k..k + 1] == "MD" line[k], line[k + 1] = line[k + 1], line[k] k+=1 end k+=1 end p [i+1,line] } return line end # # Примеры применения p zadanie("MDDDMMDMDDDDDM", 10) # p zadanie("MMDMMMDDDMDDDMD", 10) # p zadanie("MMMDMM", 5)
Сначала легче посчитать исходное значение выражение.
Если разбить выражение на пары (2016-2015) + (2014-2013) ... То можно заметить, что значение каждой скобки равно 1.
Таких пар будет 2016 : 2 = 1008
1008*1 = 1008
В двух парах, а именно (2016-2015) и (2-1) произойдут изменения. Уберём их из общего выражения на время. Без этих 4-х чисел значение выражения равно 1006.
2016−2015+2014−2013+…+2−1 = 1006 + (2016 - 2015) + (2 - 1)
Теперь поменяем местами 2015 и 2, найдём значение выражения:
1006 + (2016 - 2) + (2015 - 1) = 1006 + 2014 + 2014 = 5034