Drill

ProblemsC++ › finance

Split a total into installments

hardfinanceMathArraysGreedyC++

A checkout spreads a total across installments, keeping the early ones a cent higher so each slice is as equal as possible.

installmentPlan(totalMinor: int, installments: int) → list<int>

C++ needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

std::vector<int> installmentPlan(int totalMinor, int installments) {
    
}

Worked examples

CallResult
installmentPlan(100, 3)std::vector<int>{34, 33, 33}
installmentPlan(100, 6)std::vector<int>{17, 17, 17, 17, 16, 16}
installmentPlan(7, 3)std::vector<int>{3, 2, 2}
installmentPlan(10, 2)std::vector<int>{5, 5}

Hint

Compute the floor share and the leftover, then hand the leftovers to the front.

Reference solution in C++
std::vector<int> installmentPlan(int totalMinor, int installments) {
    std::vector<int> result;
    if (installments <= 0) return result;
    int per = totalMinor / installments;
    int extra = totalMinor % installments;
    for (int i = 0; i < installments; i++) result.push_back(i < extra ? per + 1 : per);
    return result;
}

The same problem in another language

More finance problems in C++