如果我有:
int money;
money = 378;
现在我想说多少钞票和硬币从这里出来..
瑞典有这些钞票:500,100,50,20和硬币10,5,1
所以我想从上面的money
值获得输出:
3x100,1x50,1x20,1x5,3x1
我该怎么做?
答案 0 :(得分:7)
想想你将如何在现实生活中做到这一点。您可能从最高面额的银行纸币开始,尽可能多地使用(减少剩余金额),然后移至下一个最高等等。
因此,对于您的示例,您从378开始。您可以使用多少500个?没有。所以你仍然有378 ...你可以使用多少100? 3,离开你78去。你可以使用多少50? 1,留下28去等等。
您需要某种代表可用银行票据(和硬币)的集合,并记录您仍需要代表的金额。想想你想如何表示结果。
答案 1 :(得分:3)
使用除法和模运算符。除以最大的账单和向下舍入,然后使用模数的结果作为下一个最大的账单:
378 / 500 = 0.756 -> 0
378 % 500 = 378
378 / 100 = 3.78 -> 3
378 % 100 = 78
78 / 50 = 1.56 -> 1
78 % 50 = 28
28 / 20 = 1.4 -> 1
28 % 20 = 8
8 / 5 = 1.6 -> 1
8 % 5 = 3
3 / 1 = 3
答案 2 :(得分:2)
答案 3 :(得分:1)
为您的示例: 378
378 > = 100 ---------- > 100*1
278 > = 100 -----------> 100 *1
178 > = 100 -----------> 100 *1
78 > = 50 -----------> 50 *1
28 > = 20 -----------> 20 *1
8 > = 1 -----------> 1 *1
.
.
1 > = 1 -----------> 1 *1
或者更优化的一个
例如:
378 / 100 = 3.78 >=1 ------------- 3 * 100 and money = 378%100 = 78
78 / 50 = 1.0somehting >=1 -----1 * 50 and money = 78 %50 = 28
明智的......
答案 4 :(得分:1)
使用除法和模数:)
378/500将返回0,这意味着500不适合378 378/100将返回3,这意味着100次适合378次3次。 当结果大于0时,使用%来查找其余的 378%100将返回78 重复,直到花了所有:)