当前位置:编程学习 > C/C++ >>

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

题目:糖果进货时有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,都可以
补充:软件开发 , C语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,