将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?
输入在一行中给出待换的零钱数额x∈(8,100)。
要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。
13
fen5:2, fen2:1, fen1:1, total:4
fen5:1, fen2:3, fen1:2, total:6
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:1, fen1:6, total:8
count = 4
(2)依据题目要求每种硬币至少有一个,用数学逻辑将其中俩种硬币设为一个,计算出另一个最多有多少个通过for循坏计算,但输出结果是对称的
#include
int main()
{
int fen5, fen2, fen1, total=3, count=0, x;
scanf("%d", &x);
for (int fen5 = 1; fen5 < 20; fen5++)
{
//fen2=93-fen5-
for (int fen2 = 1; fen2 <= 47; fen2++)
{
for (fen1 = 1; fen1 <= 93; fen1++)
{
if (x == 5 * fen5 + 2 * fen2 + fen1)
{
count++;
total = fen5 + fen2 + fen1;
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", fen5, fen2, fen1, total);
}
}
}
}
printf("count = %d", count);
return 0;
}
输出结果:
fen5:1, fen2:1, fen1:6, total:8
fen5:1, fen2:2, fen1:4, total:7
fen5:1, fen2:3, fen1:2, total:6
fen5:2, fen2:1, fen1:1, total:4
count = 4
1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,会有很多种兑换方案。请编写程序给出各种兑换方案。
输入为一个正整数n,表示要求输出前n种可能的方案。方案的顺序,是按照5分硬币从少到多排列的。
显示前n种方案中5分、2分、1分硬币各多少枚。每行显示一种方案,数字之间空一格,最后一个数字后没有空格。
注意:如果全部方案不到n种,就顺序输出全部可能的方案。
5
1 46 53
2 42 56
3 38 59
4 34 62
5 30 65
#include
int main()
{
int fen5=1,fen2=1,fen1=1;
//fen5*5+fen2*2+fen1==150前俩个是
//fen5+fen2+fen1=100
//fen5*4+fen2=50
int i,j,k,n;
int count=0;
scanf("%d",&n);
for(fen5=1;fen5<13;fen5++)
{
fen2=50-4*fen5;
fen1=100-fen2-fen5;
if(fen5*5+fen2*2+fen1==150)
{
count++;
if(count<=n)
{
printf("%d %d %d\n",fen5,fen2,fen1);
}
}
}
return 0;
}