Я позабочусь, но вам нужно попробовать больше, чем это. А также вам нужен только один цикл. Во-первых, подумайте о том, как вы построили бы этот алгоритм. Ну, вы знаете, что вам нужно использовать цикл for, чтобы начать. Итак, давайте подумаем о том, что происходит в этой проблеме.
1) У вас есть куча.
2) Первая ночь кто-то берет кучу и делит ее на 3 и находит, что один остался, это означает mod(pile,3) = 1
.
3) Но он отбрасывает дополнительный банан. Это означает (pile-1)
.
4) Он занимает треть, оставив две трети влево. Это означает (2/3)*(pile-1)
.
5) Утром они берут кучу и делят ее на 3 и снова находят, что один остался, поэтому это означает mod((2/3)*(pile-1),3) = 1
.
6) Но они отбрасывают дополнительный банан. Это означает (2/3)*(pile-1)-1
.
7) Наконец, у каждого из них есть по крайней мере один банан, если он должен быть самой маленькой кучей. Таким образом, самая маленькая куча должна быть такой, чтобы (1/3)*((2/3)*(pile-1)-1) = 1
.
Я по существу дал вам ответ, остальное вы можете написать формулой (1/3)*((2/3)*(pile-1)-1)
и простой оператор if для проверки наименьшего возможного целого числа, которое равно 1. Это можно сделать в четырех строках внутри цикла for.
Теперь, расширяя это на любое количество людей и любое количество медведей, требуется две простые замены в этой формуле! Если ваш учитель требует этого, это можно легко разделить на два вложенных цикла.
Почему вы хотите удалить большую часть вашего вопроса? Просто продемонстрируйте еще больше усилий, и сообщество SO определенно будет готово помочь! – voxeloctree
Удаление цели упражнения и оставление только бессмысленного фрагмента кода на самом деле не является улучшением этого вопроса. – tmpearce