2.糖果由于在维护世界和平的事务中做出巨大贡献,Dzx被赠予糖果公司2010年5月23日当天无限量糖果免费优惠券。在这一天,Dzx可以从糖果公司的N件产品中任意选择若干件带回家享用。糖果公司的N件产品每件都包含数量不同的糖果。Dzx希望他选择的产品包含的糖果总数是K的整数倍,这样他才能平均地将糖果分给帮助他维护世界和平的伙伴们。当然,在满足这一条件的基础上,糖果总数越多越好。Dzx最多能带走多少糖果呢? 注意:Dzx只能将糖果公司的产品整件带走。时间限制:7000内存限制:65536输入第一行包含两个整数N(1<=N<=100)和K(1<=K<=100) 以下N行每行1个整数,表示糖果公司该件产品中包含的糖果数目,不超过1000000输出符合要求的最多能达到的糖果总数,如果不能达到K的倍数这一要求,输出0样例输入```5 712345```样例输出```14```提示Dzx的选择是2+3+4+5=14,这样糖果总数是7的倍数,并且是总数最多的选择。
【喵呜刷题小喵解析】本题要求Dzx选择若干件糖果公司的产品,使得选择的糖果总数是K的倍数,且总数最多。我们可以采用贪心算法来解决这个问题。首先,我们将糖果公司的N件产品按照包含的糖果数量从大到小排序。然后从最大的产品开始累加,直到总数达到K的倍数为止。这样可以保证在满足K的倍数条件的基础上,总数尽可能多。具体的算法如下:1. 读取输入数据,得到N和K的值,以及N件产品包含的糖果数量。2. 对N件产品按照糖果数量从大到小排序。3. 初始化总糖果数量为0,计数器count为0。4. 从最大的产品开始累加,更新总糖果数量。如果总糖果数量是K的倍数,记录当前的产品数量count,并跳出循环。5. 如果count为0,说明无法选择到满足K的倍数的产品,输出0。6. 否则,输出选择的产品列表和总糖果数量。在本题的示例输入中,N=5,K=7,糖果公司包含的产品数量分别为1、2、3、4、5。我们按照糖果数量从大到小排序后得到5、4、3、2、1。然后从最大的产品5开始累加,得到总糖果数量为15,不是7的倍数。接着累加产品4,得到总糖果数量为14,是7的倍数,且总数最多。因此,输出14。