Я бы на SWI Prolog написал:
cost(Numbers, Mul, Result):-
Third = [0, 10],
Second = [20, 30, 40, 50, 60, 70, 80, 90],
findall(Number, (between(11, 99, Number), + member(Number, Second)), First),
findall(1.5, (member(Number, Numbers), member(Number, First)), FirstCosts),
findall(1, (member(Number, Numbers), member(Number, Second)), SecondCosts),
findall(0.5, (member(Number, Numbers), member(Number, Third)), ThirdCosts),
sum_list(FirstCosts, FirstCost),
sum_list(SecondCosts, SecondCost),
sum_list(ThirdCosts, ThirdCost),
Result is (FirstCost + SecondCost + ThirdCost)*Mul.
Для запуска программы надо установить интерпретатор (бесплатный он, скачивается с официального сайта - есть версии для Windows, MacOSX и Linux {для андройда тоже есть, но я не пробовал}).
Вы тут писали, что хотите найти наиболее простой инструмент - ну я не уверен, что это пролог, хотя на harbrahabr есть статья "Как объяснить своей младшей сестре (9 лет) принципы логического программирования?" и это статья про Prolog. Ну а еще, загляните в эту статью "Введение в логическое программирование (Prolog)" - там объясняется все на нескольких простых примерах (чуть более приближенных к жизни, чем на хабре) и есть интересные ссылки на другие источники.
Плюс в том, что программы на прологе легко читаются. Ну вот например:
Third = [0, 10],
Second = [20, 30, 40, 50, 60, 70, 80, 90],
findall(Number, (between(11, 99, Number), + member(Number, Second)), First),
Тут написано - помести в третий список числа 0 и 10, во второй - 20, 30, ..., 90. А в третий - все числа от 11 до 99 (их генерирует встроенный предикат between, да такие, что они не входят во второй список. Тут немного плохо читается + member(Number, Second), но он может быть заменен на NOT(member(Number, Second))
findall(1.5, (member(Number, Numbers), member(Number, First)), FirstCosts),
Выбери среди чисел, поданных на вход (Numbers) число (Number), да такое, что оно входит в первый список. Для каждого найденного числа запиши в выходной список 1.5.
Аналогично для второго и третьего работает. Ну а дальше вычисляются суммы списков, складываются и умножаются на множитель. Я думаю, проще некуда - разберется даже ребенок.