题目:
有36个人去游玩,需要买水,商店活动买3瓶赠送一瓶。
请问题目至少需要买多少瓶饮料才可以人手一瓶?
程序:
function mathBuy($total, $range = 3)
{
$buy = $i = 0;
while ($total > 0) {
$total--;
$i++;
if ($i % $range == 0) {
$i = 0;
} else {
$buy++;
}
}
return $buy;
}
答案:
var_dump(mathBuy(36, 3)); // 计算结果24瓶,正确答案是27
求简洁的正确算法。
上午就看到这个问题了,一直没有回答。现在突然发现,这是个好问题。
就好比问:从 1 累加到 n,和是多少?
老师之所以教我们
for(i=1;i<=n;i++) sum+=i;
是为了教我们 for 循环的写法,而不是为了求1到n的累加和。我们遇到这种问题时,应该写n*(n+1)/2
。所以:
谢谢 @Yian 的回复。修改一下。对于小数,需要向上取整。