1元、5元、10元、20元、50元、100元六种面额,输入N,计算有多少种组合可以等于N


有足够多的1元、5元、10元、20元、50元、100元六种面额的纸币,输入N,计算出有多少种组合可以等于N;

如输入N=5,则返回2。因为有两种组合:1+1+1+1+1=5,5=5,即5张1元或者1张5元;

Java代码如下:

public class Test{
public int getGroups(int N){
int round5=(int) Math.floor(N/5); //N除以5并向下取整
int round10=(int) Math.floor(N/10);
int round20=(int) Math.floor(N/20);
int round50=(int) Math.floor(N/50);
int round100=(int) Math.floor(N/100);
int num=0;
if(N>0&&N<5){ //N取值大于0小于5
num=1;
}
if(N>=5&&N<10 && round5>0){ //N取值大于等于5小于10
for(int i5=0;i5<=round5;i5++){
int n5=N-(5*i5);
if(n5>=0){
num=num+1;
}
}}
if(N>=10&&N<20 && round5>0&& round10>0){ //N取值大于等于10小于20
for(int i5=0;i5<=round5;i5++){
for(int i10=0;i10<=round10;i10++){
int n10=N-(5*i5+10*i10);
if(n10>=0){
num=num+1;
}}}}
if(N>=20&&N<50 && round5>0&& round10>0&&round20>0){ //N取值大于等于20小于50
for(int i5=0;i5<=round5;i5++){
for(int i10=0;i10<=round10;i10++){
for(int i20=0;i20<round20;i20++){
int n20=N-(5*i5+10*i10+20*i20);
if(n20>=0){
num=num+1;
}}}}}
if(N>=50&&N<100 && round5>0&& round10>0&&round20>0&&round50>0){ //N取值大于等于50小于100
for(int i5=0;i5<=round5;i5++){
for(int i10=0;i10<=round10;i10++){
for(int i20=0;i20<round20;i20++){
for(int i50=0;i50<round50;i50++){
int n50=N-(5*i5+10*i10+20*i20+50*i50);
if(n50>=0){
num=num+1;
}}}}}}
if(N>=100 && round5>0&& round10>0&&round20>0&&round50>0&&round100>0){ //N取值大于等于100
for(int i5=0;i5<=round5;i5++){
for(int i10=0;i10<=round10;i10++){
for(int i20=0;i20<round20;i20++){
for(int i50=0;i50<round50;i50++){
for(int i100=0;i100<round100;i100++){
int n100=N-(5*i5+10*i10+20*i20+50*i50+100*i100);
if(n100>=0){
num=num+1;
}}}}}}}
return num;
}
public static void main(String[] args){
Test test=new Test();
int num=test.getGroups(4);
System.out.println(num);
}
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 一家商场在降价促销,如果购买金额50-100元(包含50元和100元)之间,会给10%的折扣, # 如果购买金额大于100元会给20%的折扣,编写一程序,询问购买价格,在显示出折扣(%10或20%)和最终价格 题目:企业发放的奖金根据利润提成。 利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成 3%; 60万到100万之间时,高于60万元的部分,可提成1.5%; 高于100万元时,超过 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于    100万元时,超过 换零钞问题:一张100元,换成20,10,5,1面值的零钞,每种至少一张,共有哪些换法,总计多少种换法? 给一个字符串"123456789", 在任意字符中间插入“+”、“-”、“*”、“/”四种运算符,使最后的计算结果等于50。 例如你可以如此插入:1*2*3*4-56-7+89,使这个式子的最终结果等于50。 输出所有可能的式子结果 添零占位 —— 快速生成N个0的六种办法 输入一个正整数repeat(0 文本框中只能输入小于等于100的正整数 企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;利润高于100000元,低于200000元(100000 UML的六种关系
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM