您的位置:首页 > 编程语言 > C语言/C++

[互联网面试笔试汇总C/C++-10] 糖果拆包-美团

2013-10-11 11:41 531 查看
题目:糖果进货时有6个一包,9个一包和140个一包三种包装,问用户一次购买超过多少个糖果可以不拆包装组合出用户需要的数量。

分析:这道题抽象成数学表达式就应该是:6X+9Y+140Z=N,求N的最小值。

在这里我们可以类比:

考虑到任意大于1的整数都能以2X+3Y的形式得出,

所以除3以外,任何3的倍数都可以写成6Y+9Y的形式,

那么在这个题里,140就是用来解决模3余1和模3余2这两种情况的基数。

140模3余2,因此只要大于140且模3余2的,都可以减去140*N,而成为3的倍数,最低为146

280模3余1,因此只要大于280且模3余1的,都可以减去280*N,而成为3的倍数。最低为286

考虑到285为3的倍数,284模3余2,因此只要大于等于284,都可以
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐