Вы организовываете производство печенья. каждый день вы можете посвятить или покупке новой духовки, или производству печенья. первая духовка, которую вы купите, будет стоить 5 коробок печенья. стоимость каждой следующей духовки будет больше стоимости предыдущей на 5 коробок (таким образом, вторая духовка будет стоить 10 коробок, третья - 15, и так далее). понятно, что вы можете купить духовку только в том случае, когда у вас на складе есть необходимое количество коробок. если вы посвящаете день производству печенья, вы производите одну коробку руками, плюс по одной коробке в каждой из купленных духовок. если вы посвящаете день покупке духовки, то вы покупаете духовку и больше в этот день ничего не происходит. за какое минимальное количество дней вы сможете накопить у себя на складе 532 коробки печенья?
135
464
Ответы на вопрос:
Вообщем стратегия такая: сначала наращиваем мощности, а потом копим печеньки программа вычисляет оптимальную максимальную мощность. это оказывается 9 или 10 печенек в день (т.е 8 или 9 духовок) в минимуме в общем целом на это уйдет 108 дней код на руби (1..100).step(1) {|max_productivity| productivity = 1 cockies = 0 days = 0 upgrade_cost = 5 * productivity while cockies < 532 if cockies > = upgrade_cost and productivity < max_productivity cockies -= upgrade_cost productivity += 1 upgrade_cost = 5 * productivity else cockies += productivity end days += 1 end p [max_productivity, days, cockies, productivity] } вывод (куска) [6, 119, 534, 6] [7, 112, 532, 7] [8, 109, 536, 8] [9, 108, 540, 9] [10, 108, 540, 10] [11, 109, 539, 11] [12, 111, 540, 12] [13, 113, 533, 13] [14, 116, 532, 14] [15, 120, 540, 15] [16, 124, 544, 16] [17, 128, 544, 17] [18, 132, 540, 18]
Так как язык не указан, приведу пример на SWI-Prolog.
Код:
read_int(Int) :- read(Int), integer(Int).split_int_by_numbers(0, []) :- !. split_int_by_numbers(N, [Number|Ints]) :- Number is mod(N, 10), RestN is div(N, 10), split_int_by_numbers(RestN, Ints).test_to_div(_, []).test_to_div(N, [Number|Ints]) :- mod(N, Number) =:= 0, test_to_div(N, Ints). test(Int) :- split_int_by_numbers(Int, Numbers), test_to_div(Int, Numbers), write(Int), write(" - Yes!"), nl.test(Int) :- write(Int), write(" - No!"), nl.?- read_int(Int), test(Int).Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
niceglotatel27.06.2020 06:40
-
SuperRhino75710.06.2020 23:20
-
sonyashestakova03.03.2023 05:53
-
jelenazeile15.02.2022 19:20
-
zaec99916.09.2022 04:25
-
ValkyriaDemon21.05.2022 01:59
-
Секретик32132106.03.2021 08:03
-
идьме22.12.2020 06:39
-
Zhuchkov27030213.01.2022 21:21
-
дашуля29823.09.2020 05:56
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.