Если считать вручную. Сначала найдем сколько при таком колве ресурсов можно максимум создать изделий max A = min(20/2,15/3,16/4) = min(10,5,4) = 4 max B = min(20/3,15/1,12/3) = min(6.6,15,4) = 4 Впринцепе выгоднее выпустить максимум изделия А и на остальные ресурсы В Это получится 4А+3В = 29уе
На всякий случай проверим и другие варианты. 0A + 4B = 12y.e. 1A + 4B = 17y.e. 2A + 4B = 22y.e. 3A + 4B = 27y.e. 4A + 3B = 29y.e.
Расчеты проводились кодом на Руби Pa = [2,3,4,0] Pb = [3,1,0,3] CostA=5 CostB=3
for i in 0..4 a=0 b=0 praw = [20,15,16,12] f = true
while a < i and f do (0...praw.size).step(1) { |j| f = false if praw[j] - Pa[j] < 0} break if not f (0...praw.size).step(1) { |j| praw[j] -= Pa[j]} a += 1 end
f = true
while f do (0...praw.size).step(1) { |j| f = false if praw[j] - Pb[j] < 0} break if not f (0...praw.size).step(1) { |j| praw[j] -= Pb[j]} b += 1 end
puts "#{a}A + #{b}B = #{CostA*a + CostB*b}y.e." end
Если бы билет был всего 1, то сообщение о том, что вытащили билет 1, вообще не несло бы никакой информации, потому что мы заранее знаем, что может выпасть ТОЛЬКО билет номер 1, и никакой другой. 1 = 2^0. Если бы билетов было 2, с номерами, то сообщение, что выпал билет 1, или что выпал билет 2, несло бы 1 бит информации, он может принимать значения 0 и 1. Условно можно обозначить билет 1 = 0, билет 2 = 1. 2 = 2^1. Продолжая также дальше, мы получим, что, если у нас есть 2^n билетов, то сообщение, что вынули один билет номер k, несет n бит информации. ответ: сообщение, что из 32 = 2^5 билетов вынули билет 23, несет 5 бит.
Сначала найдем сколько при таком колве ресурсов можно максимум создать изделий
max A = min(20/2,15/3,16/4) = min(10,5,4) = 4
max B = min(20/3,15/1,12/3) = min(6.6,15,4) = 4
Впринцепе выгоднее выпустить максимум изделия А и на остальные ресурсы В
Это получится 4А+3В = 29уе
На всякий случай проверим и другие варианты.
0A + 4B = 12y.e.
1A + 4B = 17y.e.
2A + 4B = 22y.e.
3A + 4B = 27y.e.
4A + 3B = 29y.e.
Расчеты проводились кодом на Руби
Pa = [2,3,4,0]
Pb = [3,1,0,3]
CostA=5
CostB=3
for i in 0..4
a=0
b=0
praw = [20,15,16,12]
f = true
while a < i and f do
(0...praw.size).step(1) { |j| f = false if praw[j] - Pa[j] < 0}
break if not f
(0...praw.size).step(1) { |j| praw[j] -= Pa[j]}
a += 1
end
f = true
while f do
(0...praw.size).step(1) { |j| f = false if praw[j] - Pb[j] < 0}
break if not f
(0...praw.size).step(1) { |j| praw[j] -= Pb[j]}
b += 1
end
puts "#{a}A + #{b}B = #{CostA*a + CostB*b}y.e."
end
ответ 4A + 3B = 29y.e.