Найти - Пользователи
Полная версия: "Голодные Окуни" или Помогите добить задачку!
Начало » Python для новичков » "Голодные Окуни" или Помогите добить задачку!
1 2 3 4 5
sypper-pit
возможно там имеется смысл , если только … рассматривать до насыщения окуней типа 11 окуней было… и тут у меня поевляется 2 формулы … поедание оставшегося голодного или 6 голодных …
1) (11 - (11 - 3))
2) (11 - (11 - (3+1)))
и тут оба рещения я считаю верными , т.к. 1 окунь может быть среди сытых или скушанных
Ferroman
sypper-pit
OMG
N-(N-M) всегда будет равно M.
sypper-pit
:)))) я знаю :))) они и так все друг-дружку кушают и остаётся только ровное количество взаимноголодных
Ferroman
o7412369815963
А почему N-1?

Тут есть одна хитрая штука - просто так делить не получится, поскольку сытые окуни принадлежат общему множеству окуней озера.
Пример:
Из 11 рыб никак не может остаться 3 сытых. Поскольку порций еды всего 3(по 3 рыбины) что вместе даёт 9 рыбин - они могут насытить 3 окуня, теоретически. Только вот нету этих 3-х окуней - вне порций осталось только 2. Каждый из них съест по 3 рыбины - всего 6 - и останется 5 (2 сытых и 3 голодных). Дальше кто кого бы не ел количество сытых окуней не увеличится.

*********** - все окуни
О*******### - съели 3
ОО***###### - съели ещё 3
Все. Дальше кто бы кого не съел больше 2-х сытых не будет.
o7412369815963
Ferroman
задача звучит так: Какое наибольшее количество окуней может насытиться.

что-бы получить максимальное количество окуней нужно съедать сразу же насытившихся.
т.е. 1 окунь сеъедает 234, далее 5-ый съедает 167 и т.д.

фишка в том что съединые окуни тоже насыщались
Ferroman
А, новая интерпретация. Итого:

Интерпретация задачи №1
Зависит от времени. За единицу времени съедают окунь окуня. (скорее самая неверная интерпретация)
Решение: N/2**M - Дробная часть есть, если остались ещё голодные.

Интерпретация задачи №2
Не зависит от времени. Находим максимальное количество сытых окуней оставшихся в озере.
Решение: N/M-1

Интерпретация задачи №3
Не зависит от времени. Находим количество всех окуней которые когда-либо насыщались.
Решение: N/M (а не (N-1)/M. Легко проверить N=18, M=3)
o7412369815963
Ferroman
Решение: N/M (а не (N-1)/M. Легко проверить N=18, M=3)
нет, правильный (N-1)/M, при 18 - 3 ответ = 5

1: 2-3-4 ( первая съела 2 3 4)
5: 1-6-7 ( 5-ая съела 1 6 7 )
8: 5-9-10
11: 8-12-13
14: 11-15-16
17: 14-18- ?
и последнй не хватает одной рыбки
Ferroman
Согласен, должно быть N-1 (в конце всегда останется 1 сытая рыбка, которую никто не съест, её надо исключить)
baa
С начало надо правильно понять задачу. Ключевая фраза НАИБОЛЬШЕЕ количество окуней может насытиться?“
Перефразируем ”теоретически наибольшее" и все сразу становиться ясно.
Допустим окуней 9 и для насыщения одного окуня надо 2 окуня.
Первая итерация: 1 окунь съедает 2 и становиться сытым, окуней остается 7 один из них 1 сытый
(то что окунь сытый ни как на дальнейшие расчеты не влияет, так как по условию для насыщения 1 окуня нужно 2 не важно сытых или голодных окуня.)
Вторая итерация: 1 окунь съедает 2 и становиться сытым, окуней остается 5
Третья итерация: (уже хочется писать код) 5-2=3 и счетчик итераций, а заодно и кол-во насытившихся окуней = 3
Четвертая итерация: 3-2=1, i=4
Пятая итерация: 1-2=-1 окунек остался наполовину голодным незачет
print(M / N)
Отрабатываем ошибки.
Теоретически N может быть и не целым числом N=1.5 (правда по условию задачи числа натуральные, но усложним)
Перепишем код:
print(M // N)
А если N=0? Если для насыщения карася другие караси не нужны (травкой из пруда насытятся), то все M карасей будут сыты.
print(M // max(N, 1))

In = open('fish.in','r').read().split()

M, N = int(In[0]), float(In[1])

Out = M // max(N,1)

open('fish.out','w').write(str(Out))
agalen
baa
print(M // max(N, 1))
Должно быть: print(M // (N + 1))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB