Есть ответ 👍

Вы организовываете производство печенья. каждый день вы можете посвятить или покупке новой духовки, или производству печенья. первая духовка, которую вы купите, будет стоить 5 коробок печенья. стоимость каждой следующей духовки будет больше стоимости предыдущей на 5 коробок (таким образом, вторая духовка будет стоить 10 коробок, третья - 15, и так далее). понятно, что вы можете купить духовку только в том случае, когда у вас на складе есть необходимое количество коробок. если вы посвящаете день производству печенья, вы производите одну коробку руками, плюс по одной коробке в каждой из купленных духовок. если вы посвящаете день покупке духовки, то вы покупаете духовку и больше в этот день ничего не происходит. за какое минимальное количество дней вы сможете накопить у себя на складе 532 коробки печенья?

135
464
Посмотреть ответы 2

Ответы на вопрос:


Вообщем стратегия такая: сначала наращиваем мощности, а потом копим печеньки программа вычисляет оптимальную максимальную мощность. это оказывается 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

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

    otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.

Подпишись на наш телеграмм канал

GTP TOP NEWS