将钱分给最多的儿童

给你一个整数 money ,表示你总共有的钱数(单位为美元)和另一个整数 children ,表示你要将钱分配给多少个儿童。
你需要按照如下规则分配:
所有的钱都必须被分配。
每个儿童至少获得 1 美元。
没有人获得 4 美元。
请你按照上述规则分配金钱,并返回 最多 有多少个儿童获得 恰好 8 美元。如果没有任何分配方案,返回 -1 。

  • 输入:money = 20, children = 3
    输出:1
    解释:
    最多获得 8 美元的儿童数为 1 。一种分配方案为:

  • 给第一个儿童分配 8 美元。

  • 给第二个儿童分配 9 美元。

  • 给第三个儿童分配 3 美元。
    没有分配方案能让获得 8 美元的儿童数超过 1 。

  • 输入:money = 16, children = 2
    输出:2
    解释:每个儿童都可以获得 8 美元。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var distMoney = function(money, children) {
// 不够分时返回-1
if (money < children) return -1
// 每人至少1美元
let left = money - children
// 返回值
let ans = 0
while (left >= 7) {
ans++
left -= 7
// 当剩余3美元且分到7美元的人数是children - 1时,才需要-1
if (left === 3 && ans === children - 1) {
ans--
break
}
if (ans === children) {
// 还有剩余钱数时,需要-1
if (left > 0) {
ans--
}
break
}
}
return ans
};