问题:你有k瓶可乐,兑换规则为每a个瓶盖可以换一瓶可乐,问总共可以和多少瓶可乐?
方法一:数学方法
a个瓶盖换一瓶可乐:
相当于可以用a-1个瓶盖,兑换一瓶无盖的可乐;
例如a为3的时候,当有(3-1)个瓶盖的时候,可以向商家‘借’一个瓶盖凑齐3个满足了规则换来一瓶可乐,然后将瓶盖还给商家。
那么结果是不是 k/(a-1)呢?不对
假设 x%(a-1) == 0,则最后一个(a-1)不能兑换一个没盖子的可乐,需要a个才能换一个没盖子的可乐。因为这个交换本质上是“透支的”,而这个交换只有在剩余的盖子数大于a的时候才能进行,所以最后一次交换至少剩余一个盖子,所以最后一个盖子本质上没有用;
因此
可以喝 a + (a-1)/(k-1);
方法二:循环写法
// 可乐换瓶盖;共有 n 元钱, 每瓶m元,每k个瓶盖兑一瓶;public static int exchange(int n, int m, int k){// 开始不换一共能喝first瓶int first = n / m;int total = first;// 开始用first个盖子进行兑换while (first > k){// first个盖子能换second瓶int second = first / k;// 计入总数total += second;// 用seconde个盖子继续上述流程first = second;}return total;}
本文发布于:2024-01-31 02:40:12,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170664001424753.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |