该函数实现将一笔钱amount按照比例ratios进行分摊,
比如100RMB按照(1,1,1)分摊的话,结果是(34,33,33)
代码如下:
public long[] allocate(long amount, long[] ratios) {
long total = 0;
for (int i = 0; i < ratios.length; i++) total += ratios[i];
long remainder = amount;
long[] results = new long[ratios.length];
for (int i = 0; i < results.length; i++) {
results[i] = amount * ratios[i] / total;
remainder -= results[i];
}
for (int i = 0; i < remainder; i++) {
results[i]++;
}
return results;
}
问题是,里面最后一个for循环,隐含着remainder<results.length,谁能给证明一下?

