Это сложная задача - тут нет простого и быстрого алгоритма.
Можно свести ее к integer linear programming и решать какой-то из множества существующих библиотек/солверов. Если числа маленькие, то можно или полный перебор или какую-то динамику, типа решения задачи о рюкзаке сделать (тут надо будет набранные суммы во всех приборах взять в параметры).
Если нужно не обязательно оптимальное решение - а что-то не слишком ужасное, то можно делать жадность, как
Adamos предложил.