Если вы можете купить только то, что в таблице, вам нужно будет петли
1) buy maximum amount without going over.
2) capture hours, and calculate money left.
3) repeat
Это предполагает, что вы получаете по крайней мере, лучше иметь дело, чем больше времени вы покупаете.
так от 17USD, вы
1) buy 1 card (15,30USD)
2) 5 hours (total), (1,70USD left)
1) buy 3 cards (3 x 0,50 = 1,50USD)
2) 5 hours 45 min (total), (0,20 left)
exit (not enough to buy lowest card
Answer = 5 hours 45 min (0,20 left)
Мое предположение может показаться ошибочным, но здесь хороший рассуждения. Предполагая, что это телефонные карточки, у них обычно есть установленная плата (первый раз) или базовая плата за вызов каждый раз, когда вы совершаете вызов, так что вы фактически не получаете полное время разговора, указанное на карте, только баланс количество.
Они могут сказать, 5с/мин, но 10с основания на вызов заряд, который означает, что вы получите
- a 8 minute call on a "15minute" card for 50 cents, (6.25c/min)
- a 58 minute call on a "1hour" card for 300 cents (5.17c/min)
- a 484 minute call on a "8hours" card for 2430 cents (5.02c/min)
Я знаю, что это может быть больше информации, чем необходимо для ответа, но реализация зависит от того, кодируются как покупатель или продавец. Если вы являетесь покупателем, вам нужно сделать больше математики, а также предоставить информацию о том, что такое плата за установку, плату за вызов и количество вызовов, которые вы планируете делать с каждой карточкой. Вот почему для любого телефонного плана важно знать ваши шаблоны вызовов.
Какой код вы старались? Можете ли вы купить только то, что находится в таблице, или можете купить, скажем, 16 минут? – ergonaut
Выше '3 часа -> стоимость 9,30USD' выглядит линейно по 3 USD/час –
@Alex, no. т.е. на 8 часов это $ 24.3, что означает, что это 3.0375 – g2000