На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела
1. Не создавайте несколько одинаковых тем, ибо модератор может расценить их, как спам и удалить все.
2. Для решения задач по GPSS есть отдельная тема. Все задачи по GPSS опубликовывать в этой теме! Перед опубликовыванием вашей задачи просмотрите всю тему, возможно вы сразу найдете решение.
3. Давайте вашим темам ОСМЫСЛЕННЫЕ названия, а также указывайте язык программирования. Пример: [Pascal]:Работа с файлами и записями.
4. Использования тега CODE обязательно при публикации текста программы.

Темы, оформленные с явным игнорированием правил и отсутствием смысла, будут закрыты/удалены!
Вам помогли? Напишите об этом здесь (в портфолио фрилансера)

Фрилансерам:
5. Демпинг цен запрещен (даже если Вы готовы работать бесплатно). Цены обсуждаются в приватном общении. Если вы готовы рещить задачу бесплатно, просто решите ее быстрее, чем возникнет предложение сделать это за деньги.
6. Пользователям, входящим в группу Newbie, запрещается предлагать свои услуги (завуалированно в т.ч.)
7. В посте с предложением выполнить работу, обязательно указывать ссылку на свое портфолио в Отзывы, Благодарности, Портфолио Это правило работает и в том случае, если вы выполняете работу бесплатно.
8. Реклама (даже завуалированная) своих фриланских сайтов запрещена

Нарушение данных пунктов влечет до RO или БАНА (при неоднократом)
Модераторы: ttiger, mikefreelance, Rust
  
    > Решить задачу на с++
      Билет на одну поездку в метро стоит 15 рублей, билет на 10 поездок стоит 125 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна. 
      Дано одно число n - количество поездок. Выведите три целых числа, равные необходимому количеству билетов на 1, на 10, на 60 поездок.
        Код попрошу попробовать написать самостоятельно. Но вариант решения задачи расскажу как получить ... На самом деле все просто - все типы билетов имеют разную "удельную стоимость поездки". И для решения задачи нам важно сперва выкупить все билеты наименьшей удельной стоимости, потом чуть большей, ну и далее самой большой.

        Пример:

        Пусть n=1007 поездок,
        на первом шаге выкупаем все билеты наименьшей удельной стоимости (это билеты на 60 поездок) 1007/60 = 16 билетов, остаток от деления 47
        на втором шаге выкупаем билеты на 10 поездок 47/10 = 4 билета, остаток от деления 7
        на третьем шаге выкупаем выкупаем оставшиеся билеты на одну поездку в количестве 7 шт

        Итого: 7, 4, 16

        Для программирования на С++ нужно посмотреть только целочисленное деление и деление по модулю, ну и ввод-вывод, если это для задания критично.
          JoeUser, на 59 поездок можно купить один билет за 440 р. Твой подход (5х125 + 9х15) дороже.
            MIF, согласен, нужно вводить коррективы. Выбирать на каждом шаге "купить с неистраченными поездками" или "купить ровно по поездкам" относительно цены. Но дальше мне лень это корректировать.
            Сообщение отредактировано: JoeUser -
              На одном из форумов пометили как верное решение на Python

              ExpandedWrap disabled
                n = int(input('n = '))
                result = []
                for v in (60, 20, 10, 5, 1):
                    x = n // v
                    result.append(x)
                    n -= v * x
                print(*reversed(result))
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0478 ]   [ 15 queries used ]   [ Generated: 19.03.24, 11:00 GMT ]