![]() |
Разложить число.
Привет. Дали тестовое задание. Но не пойму по какому принципу разложить надо. Как разложить число используя номиналы, точнее что делать то, умножать что то или как? Может кто знает.
--------------------------------------------------------------------------------------------------------------- Разложить число, используя монеты заданных номиналов, на N монет. Сделать интерфейс, в котором можно будет устанавливать число, номиналы и N. Визуализировать результат выполнения программы в виде стопки монет/фишек. Минимальные требования: - программа должна быть написана на ActionScript 3.0 Плюсами будет: - программа сделана на AIR и запускается на iOS - программа написана на haxe, с использованием фреймворка NME =========================================== Пример Дано: номиналы = [0.01, 0.1, 0.25, 0.5, 1, 5] число = 2.53 N=7 Ответом будет: [1, 0.5, 0.5, 0.5, 0.01, 0.01, 0.01] ------------------------------------------------------ |
Ух... мне бы в такой универ) Я ActionScript изучал на факультативе
Добавлено через 3 минуты А имеется ввиду, что у вас номиналы: 1, 2, 5, 10, 25 и 50копеек. А нужно к примеру на входе ввести 123 разложить на 10 монет, программа должна подобрать комбинацию из 10 монет чтобы в сумме они давали 123 копейки. |
Ошибка в ответе, номинала 1 нет.
Добавлено через 4 минуты Цитата:
|
Цитата:
Цитата:
|
Прочитал как 1,5 :)
|
Алгоритм "в лоб" предельно прост. Пускаем бесконечный цикл, пока оставшаяся сумма не станет равной 0. Вычитаем из нее каждый шаг самый большой номинал. Если сумма получилась отрицательной, то берем следующий номинал поменьше. Как только стала положительной, сохраняем остаток в переменную, где у нас была первоначальная сумма и идем на новую итерацию.
Что-то типа того (не окончательный вариант без кэширования) выглядит так: Код AS3:
|
|
А, да, номиналы в массиве номиналов должны идти от большего к меньшему. В моем варианте. Иначе всего лишь нужно поменять направление цикла.
|
Именно такую задачу как-то решал на работе. Реализацию поищу :)
|
спасибо
|
| Часовой пояс GMT +4, время: 23:38. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.