Ворочать мешки
Сбоку стоит по одному мешку, затем идут пары мешков, а посредине вы видите три мешка. Получилось так, что если мы умножим пару, 28, на один мешок, 7, то получится 196, что и указано на средних мешках. Но если вы умножите другую пару, 34, на ее соседа, 5, то не получите при этом 196. Нужно переставить эти девять мешков, как можно меньше надрываясь, так, чтобы каждая пара, умноженная на своего соседа, давала число, стоящее в середине.
Ответ
Рейтинг: : 2 78 156 39 4
+143
Комментарии:
Sunray, 2009-12-16
Все возможные варианты:
2 78 156 39 4
3 58 174 29 6
4 39 156 78 2
6 29 174 58 3
быстрее всего выставляется первый вариант (тот, что в ответе).
Андрей, 2009-12-16
Подскажите,плз, как решать такие задачи.
zx, 2009-12-18
Да,было бы неплохо,если бы помимо ответа интересные задачи содержали ещё и решение.
дамир, 2010-05-29
2 78 156 39 4
Зак, 2010-10-16
2Андрей, 2zx.
Увы, но такие задачи решаются только методом подстановки разных вариантов. Или, как говорила наша школьная учительница по матану, "методом научного тыка"
pasa, 2011-02-17
ну, после определенных размышлений можно сообразить, что в трехзначное число обязательно четное.
кроме того, единица должна находиться именно в нем.
а дальше тупо и мучительно перебираем все варианты с x12, x14, x16, x18, 1x2, 1x4, 1x6, 1x8.
в итоге получаем, что более чем одним способом на однозначный и двузначный множители разлагаются только 156 и 174
Юлечка, 2011-03-15
2 78 156 39 4
Михаил, 2011-11-15
34 * 5 =180
Вася, 2011-11-17
ну смотрите как я решил a*bc=d*ef от суда а/d=ef/bc a*bc>100 и a/d целое число и один должно быть в центре потом уже идет подбор
математик, 2012-02-23
вопрос Сбоку стоит по одному мешку, затем идут пары мешков, а посредине вы видите три мешка. Получилось так, что если мы умножим пару, 28, на один мешок, 7, то получится 196, что и указано на средних мешках. Но если вы умножите другую пару, 34, на ее соседа, 5, то не получите при этом 196. Нужно переставить эти девять мешков, как можно меньше надрываясь, так, чтобы каждая пара, умноженная на своего соседа, давала число, стоящее в середине. ну смотрите как я решил a*bc=d*ef от суда а/d=ef/bc a*bc>100 и a/d целое число и один должно быть в центре потом уже идет подбор Ответ: 2 78 156 39 4
Expert, 2012-03-09
Я решал програмой на Visual Basic:
' Fills movedBags according to bags and positions and returns movement cost
Function MoveBags(ByRef bags() As Integer, ByRef positions() As Integer, ByRef movedBags() As Integer) As Integer
MoveBags = 0
For i = 0 To 8
movedBags(i) = bags(positions(i))
MoveBags = MoveBags + Abs(positions(i) - i)
Next i
End Function
' Returns True if given positions satisfies the condition
Function CheckCurrentPositions(ByRef movedBags() As Integer) As Boolean
leftResult = movedBags(0) * (movedBags(1) * 10 + movedBags(2))
centerValue = movedBags(3) * 100 + movedBags(4) * 10 + movedBags(5)
rightResult = movedBags(8) * (movedBags(6) * 10 + movedBags(7))
CheckCurrentPositions = (leftResult = centerValue And centerValue = rightResult)
End Function
' Changes positions to next iteration and returns True in a case of success (i.e. when current iteration isn't last one)
Function SwitchToNextPosition(ByRef positions() As Integer) As Boolean
SwitchToNextPosition = False
' Find first element from the end that ruines ascending sequence
targetElem = -1
For i = 7 To 0 Step -1
If positions(i) < positions(i + 1) Then
targetElem = i
Exit For
End If
Next i
If targetElem = -1 Then Exit Function
minimalGreater = 10000
minimalGreaterI = -1
For j = targetElem + 1 To 8
If positions(j) > positions(targetElem) And positions(j) < minimalGreater Then
minimalGreater = positions(j)
minimalGreaterI = j
End If
Next j
' Exchange values
tmp = positions(targetElem)
positions(targetElem) = positions(minimalGreaterI)
positions(minimalGreaterI) = tmp
' Sort rest (bubble method)
For k = targetElem + 1 To 7
For l = k + 1 To 8
If positions(k) > positions(l) Then
tmp = positions(k)
positions(k) = positions(l)
positions(l) = tmp
End If
Next l
Next k
SwitchToNextPosition = True
End Function
' Returns formatted string with bags values
Function FormatBagsString(ByRef movedBags() As Integer, cost As Integer) As String
FormatBagsString = ""
For i = 0 To 7
FormatBagsString = FormatBagsString + Str(movedBags(i)) + ", "
Next i
FormatBagsString = FormatBagsString + Str(movedBags(8)) + "; Cost = " + Str(cost) + " movements"
End Function
Function Poisk()
Dim bags(8) As Integer
Dim bagPositions(8) As Integer
Dim movedBags(8) As Integer
' Stored position, (9) - cost
Dim results(100, 9) As Integer
nextStorageSlot = 0
' Init bags values
bags(0) = 7
bags(1) = 2
bags(2) = 8
bags(3) = 1
bags(4) = 9
bags(5) = 6
bags(6) = 3
bags(7) = 4
bags(8) = 5
' Init starting positions
For i = 0 To 8
bagPositions(i) = i
Next i
Do
cost = MoveBags(bags, bagPositions, movedBags)
If CheckCurrentPositions(movedBags) Then
' Store positions copy and movement cost
For i = 0 To 8
results(nextStorageSlot, i) = movedBags(i)
Next i
results(nextStorageSlot, 9) = cost
nextStorageSlot = nextStorageSlot + 1
End If
Loop While SwitchToNextPosition(bagPositions)
' Find cheapest iteration
minimalCostIteration = -1
minCost = 100000
For i = 0 To nextStorageSlot - 1
curCost = results(i, 9)
If curCost < minCost Then
minimalCostIteration = i
minCost = curCost
End If
Next i
If minimalCostIteration <> -1 Then
For i = 0 To 8
movedBags(i) = results(minimalCostIteration, i)
Next i
Poisk = FormatBagsString(movedBags, results(minimalCostIteration, 9))
Else
Poisk = "Not found"
End If
End Function
shash, 2013-05-03
сразу понятно, что цифра 5 не находится в разряде единиц любого из чисел, поэтому ее надо переставить. Затем становится понятно, что число посередине целое. Чтобы уравнять произведения справа и слева от центрального числа нужно слева уменьшить результат, а справа увеличить, соответственно, уменьшится число в центре. Т.к. нужно решить задачу наименьшим числом перестановок, то начать надо, поменяв 9 и 5. Дальше все само получится.
Кристина, 2014-03-14
Все равно не могу разобраться как решить задачу?!! Помогите, объяснить поподробнее!!!
Ал., 2014-04-12
Тот, кто решил задачу в бейсике вообще отмороженный чел.
Ктото , 2019-01-03
Многовато
Митя, 2020-03-31
Да тут легче:
есть 7 28 196 34 5
1) меняем 9 и 5 местами, чтоб увеличить произведение справа
7 28 156 34 9
2) смотрим, как переставить цифры слева и справа, чтоб их произведение было 156. На глаз видно, что слева надо поменять 2 и 7, а справа 9 и 4. Тогда
2 78 156 39 4
перемножаем - равенство верно.
Алексей Порубай, 2020-04-18
2 78 156 39 4
Меняем 2 и 7
Меняем 4 и 5
Меняем 5 и 9
И вуаля