# Код на ruby 2.2.3p173 def zadanie(jump1, jump2) min = jump1 for i in 1..1000 next if (i*jump1)%jump2 == 0 or (i*jump2)%jump1 == 0
if min > (i*jump1)%jump2 min = (i*jump1)%jump2 p [min, "#{i} * #{jump1} - #{i*jump1/jump2} * #{jump2}"] end
if min > (i*jump2)%jump1 min = (i*jump2)%jump1 p [min, "#{i} * #{jump2} - #{i*jump2/jump1} * #{jump1}"] end end return min end # # Примеры применения p zadanie(33, 55)
Квадратное уравнение имеет вид: ах^2 + bx + c = 0. (1)здесь а, b и с – коэффициенты. сначала надо вычислить дискриминант квадратного уравненияd = (b^2 – 4ac) (2)если d > 0, то квадратное уравнение имеет два корня х1 и х2. обозначим с = корень(d). то есть надо вычислить квадратный корень из d. имеем такие решениях1 = (–b + c)/(2a) и x2 = (–b – c)/(2a). (3)если дискриминант d = 0, то c = 0 и оба корня одинаковы х1 = х2 (хотя в школе обычно говорят, что имеется только одно решение) и вычисляются по формулех1 = х2 = –b/(2a). (4). эта формула следует из формулы (3) при с = d = 0.если дискриминант d меньше нуля, то корень из d вычислить нельзя, с будет мнимым числом. вообще говоря, корни есть (2 штуки), но они будут мнимыми числами. хотя в школе учат, что в этом случае корней нет. так и будем считать, что корней нет.алгоритм решения будет следующий но только здесь дискриминант d обозначен малой буквой d
def zadanie(jump1, jump2)
min = jump1
for i in 1..1000
next if (i*jump1)%jump2 == 0 or (i*jump2)%jump1 == 0
if min > (i*jump1)%jump2
min = (i*jump1)%jump2
p [min, "#{i} * #{jump1} - #{i*jump1/jump2} * #{jump2}"]
end
if min > (i*jump2)%jump1
min = (i*jump2)%jump1
p [min, "#{i} * #{jump2} - #{i*jump2/jump1} * #{jump1}"]
end
end
return min
end
# # Примеры применения
p zadanie(33, 55)
Вывод
[22, "1 * 55 - 1 * 33"]
[11, "2 * 33 - 1 * 55"]
11
Т.е. минимум при 2 * 33 - 1 * 55 = 11