Определите значения переменных x и y после выполнения следующего фрагмента программы:
x:=8; y:=2; if x>y then begin x:= x-y; y:=x; end else begin y:= y-x; x:= y; end;
Варианты ответа
1) x= 6,y= 6
2) x= -6, y= -6
3) x= 6, y= 8
4) x=2, y= -6
5) x=6, y= -6
Сначала легче посчитать исходное значение выражение.
Если разбить выражение на пары (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
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)
Вывод
[1, "DMDDMDMDMDDDMDM"]
[2, "DDMDDMDMDMDDMDMM"]
[3, "DDDMDDMDMDDMDMMM"]
[4, "MDDMDDMD"]
[5, "MDDDMD"]
[6, "MDMMMDMD"]
[7, "MMMDMD"]
[8, "MMDMD"]
[9, "MDMD"]
[10, "MD"]
"MD"