Веселый молочник
Трое ребят пришли к веселому молочнику за молоком с битонами 3, 4 и 5 литра и попросили налить каждому по 2 литра.У молочника есть 2 полных больших фляги по 50 литров каждая. Немного подумав, молочник легко справился с этим заданием.
А вы ?
А вы ?
Ответ
Рейтинг: : 5лит 3лит 4лит 50лит 50лит
-----------------------------------------
0 3 4 46 47
5 0 2 46 47
2 3 2 46 47
0 3 2 46 49
3 0 2 46 49
5 0 2 44 49
2 3 2 44 49
2 2 2 44 50
-----------------------------------------
0 3 4 46 47
5 0 2 46 47
2 3 2 46 47
0 3 2 46 49
3 0 2 46 49
5 0 2 44 49
2 3 2 44 49
2 2 2 44 50
+115
Комментарии:
kir, 2009-06-30
Читая условия задачи я понял под одним переливанием переливание из одной емкости в другую, в ответе на первом же переливании из двух емкостей в две, то есть два переливания.
во втором переливании снова из двух емкостей, но в одну и так далее...
KM, 2009-06-30
ответ не соответствует условию задачи.
У меня получилось за 9 переливаний, если по условию
kir, 2009-06-30
посмотрел внимательнее приведенный ответ и подумал, что уж если и следовать такому решению, то проще было бы так:
1. 0 3 4 46 47
2. 5 0 2 46 47
3. 2 3 2 46 47
4. 2 0 2 49 47
5. 2 3 2 49 44
6. 2 2 2 50 44
Весёлое молочко ха...!!!ха...!!!, 2009-07-16
Наполняем 5л бидон, из него переливаем в 3л, в результате в 5л остаётся 2литра, переливаем их в 4л.
Затем из 3л, переливаем обратно в 5л, доливаем в него из фляги, затем из полного 5л, опят переливаем в 3л.
В результате в 5л и 4л бедонах - по 2 литра молока.
Выливаем из 3л в большую флягу, в результате в ней будет 50-4=46 литров. Из второй полной 50 л-й фляги набиратем 3л бидоном и переливаем в 1-ю флягу, в результате в ней будет 46+3=49 литров. Набираем из второй фляги 3л бидон, отливаем из него в 1-ю флягу, что бы наполнить её до 50 литров, для чего нужно 1литр, и в результате в 3л бедоне останется 2л.
Таким образом получим 3-х, 4-х и 5 литровые бидоны, наполненные по 2 литра молока.
Лист, 2009-08-02
у него была мерная банка,двухлитровая...
Алекс, 2009-10-18
Элементарно Ватсон
Берем 4л переливаем в 3л остаток 1л и так два раза получаем 2л
Шурик =), 2009-10-28
Наполняем 4л бидон. Выливаем половину в 3л.б. и половину в 5л.б. Затем наполняем 4л. бидон наполовину. =)
Артём, 2009-12-08
Откровенный бред. Недозадача.
Так как в условии не зашито не единого правила в действии, я сделал бы это самым быстрым и умным способом. Налил бы в 3, 4 и 5 без никаких переливаний.
дамир, 2010-05-29
из 50 льём в5.1б-45 осталось. переливаем с 5 в 3, остается 2. из 3 выливаем в 45=48.Теперь с другой 50 льем в 3,затем выливаем с 3 в 4,продеелываем еще раз и получается в 3 остается 2. А из 4 доливаем в 48 и все 2 2 2
$Wol@nD$, 2010-10-04
50,50,0,0,0
50,45,5,0,0
50,45,2,0,3
50,48,2,0,0
50,48,0,2,0
45,48,5,2,0
45,48,2,2,3
48,48,2,2,0
48,48,2,0,2
48,44,2,4,2
50,44,2,2,2
$Wol@nD$, 2010-10-04
50,50,0,0,0
50,45,5,0,0
50,45,2,0,3
50,48,2,0,0
50,48,0,2,0
45,48,5,2,0
45,48,2,2,3
48,48,2,2,0
48,48,2,0,2
48,44,2,4,2
50,44,2,2,2
this, 2011-01-23
3 4 5 50 50
-------------------------------
0 0 5 45 50
0 4 5 45 46
3 4 2 45 46
3 0 2 49 46
3 2 0 49 46
0 2 5 49 44
3 2 2 49 44
-----------
2 2 2 50 44
перcа , 2011-04-18
Трое ребят пришли к веселому молочнику за молоком с битонами 3, 4 и 5 литра и попросили налить каждому по 2 литра.У молочника есть 2 полных больших фляги по 50 литров каждая. Немного подумав, молочник легко справился с этим заданием.
А вы ? Ответ: 5лит 3лит 4лит 50лит 50лит
-----------------------------------------
0 3 4 46 47
5 0 2 46 47
2 3 2 46 47
0 3 2 46 49
3 0 2 46 49
5 0 2 44 49
2 3 2 44 49
2 2 2 44 50
sos, 2011-10-06
объясните как это?
тормоз , 2011-11-28
а не проще сначала налить полный бидон 4 литра разлить его поровну между 3 и 5 а после налить половину в 4? Или я и в правду такой тупой?
Алина, 2011-12-17
фигня
Expert, 2012-03-09
0/3 0/4 0/5 50/50 50/50
3 0 0 47 50 50(1) -> 3
0 3 0 47 50 3 -> 4
3 3 0 44 50 50(1) -> 3
0 3 3 44 50 3 -> 5
3 3 3 44 47 50(2) -> 3
2 4 3 44 47 3 -> 4
2 2 5 44 47 4 -> 5
2 2 2 44 50 5 -> 50(2)
Решал с помощью программи на Visual Basic:
'tanks: 0,1,2 = 3,4,5 litres; 3,4 = 50 litres
Const maxDepth As Integer = 20
Const maxTankIndex As Integer = 4
' Returns True if volumes are valid
Function AreVolumesValid(ByRef currentVolumes() As Integer) As Boolean
AreVolumesValid = (currentVolumes(0) = 2) And (currentVolumes(1) = 2) And (currentVolumes(2) = 2)
End Function
' Returns True higher iteration should be continued
Function IterateBranchesRecursively(ByRef totalVolumes() As Integer, ByRef currentVolumes() As Integer, currentDepth As Integer, ByRef foundSteps() As Integer) As Boolean
' If it is going to deep , just skip iteration to avoid stack overflow
If currentDepth > maxDepth Then
IterateBranchesRecursively = True
Exit Function
End If
' Check current state
If AreVolumesValid(currentVolumes) Then
IterateBranchesRecursively = False
Exit Function
End If
Dim volumesLocalCopy(maxTankIndex) As Integer
' Iterate
continueIteration = True
For fromID = 0 To maxTankIndex
For toID = 0 To maxTankIndex
If fromID <> toID Then
' Replicate to local copy
For i = 0 To maxTankIndex
volumesLocalCopy(i) = currentVolumes(i)
Next i
' Check volumes and pour
freeInDestination = totalVolumes(toID) - volumesLocalCopy(toID)
leftInSource = volumesLocalCopy(fromID)
If leftInSource > 0 And freeInDestination > 0 Then
If leftInSource > freeInDestination Then
volumesLocalCopy(toID) = totalVolumes(toID)
volumesLocalCopy(fromID) = leftInSource - freeInDestination
Else
volumesLocalCopy(toID) = volumesLocalCopy(toID) + leftInSource
volumesLocalCopy(fromID) = 0
End If
' Iterate deeper
continueIteration = IterateBranchesRecursively(totalVolumes, volumesLocalCopy, currentDepth + 1, foundSteps)
If Not continueIteration Then
foundSteps(currentDepth, 0) = fromID
foundSteps(currentDepth, 1) = toID
End If
End If
End If
If Not continueIteration Then Exit For
Next toID
If Not continueIteration Then Exit For
Next fromID
IterateBranchesRecursively = continueIteration
End Function
Function Poisk()
Dim totals(maxTankIndex) As Integer
totals(0) = 3
totals(1) = 4
totals(2) = 5
totals(3) = 50
totals(4) = 50
Dim startingVolumes(maxTankIndex) As Integer
startingVolumes(0) = 0
startingVolumes(1) = 0
startingVolumes(2) = 0
startingVolumes(3) = 50
startingVolumes(4) = 50
Dim steps(maxDepth, 1) As Integer
res = IterateBranchesRecursively(totals, startingVolumes, 0, steps)
a = 1
End Function
Дима, 2012-06-07
2 2 2 47 47
Катерина, 2014-04-21
Отличная задача. и чего вы мудрите с ответом. все просто. никаких переливаний до середины! - это действительно бред :D поскольку неточность!
1. Наполняем 5л бидон, из него переливаем в 3л, в результате в 5л остаётся 2литра
из 3-х переливаем в бочку(теперь там 48 литров) из пяти - в 4-х. ![:) :)](/images/smiles/smile.gif)
2. из полной бочки наливаем в пятилитровый и переливаем в трех. опять в 5-ти литровом 2 литра. из трех переливаем обратно во вторую бочку. в каждой из бочек по 48 литров ![:) :)](/images/smiles/smile.gif)
3. из 4-х литрового переливаем в трех литровый.
4. из одной бочки наливаем полный 4-хлитровый и отливаем из него дополна в другую бочку, в которой 48 литров
. все!!
horse426 , 2014-08-09
Решил в три действия. Из 20 переливаем 13л. бочку 10 л , затем из 13л бочки переливаем 5л. в бочку 7 л , а потом , чтобы ни кого не смущать 5л. из любой бочки переливаем в нашу 20 л.
@#155, 2015-10-14
Трое ребят пришли к веселому молочнику за молоком с бИтонами••••
Либо с бидонами, либо...с бетоном![:) :)](/images/smiles/smile.gif)
)))
Объясните!