将一元纸币兑换成1分、2分和5分硬币,要求兑换总的枚数为50枚,问共有多少种换法?请编程计算
你题目的解答代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
int count = 0;
for (int i = 0; i <= 20; i++)
{
for (int j = 0; j <= 50; j++)
{
int k = 50 - i - j;
if (k >= 0 && i * 5 + j * 2 + k == 100)
{
printf("5分:%d 2分:%d 1分:%d \n", i, j, k);
count++;
}
}
}
printf("共有%d种分法\n", count);
return 0;
}
如有帮助,望采纳!谢谢!
三层循环就行了
//将一元纸币兑换成1分、2分和5分硬币,要求兑换总的枚数为50枚
#include <stdio.h>
int main()
{
int i,j;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++)
{
if((50-i-j)+j*2+i*5 == 100)
printf("5分%d个,2分%d个,1分%d个\n",i,j,50-i-j);
}
return 0;
}
函数问题
设1,2,5的个数分别为:x,y,z;
则x+y+z=50
而1x+2y+5z=100
消去x可得
y+4z=50
y的取值范围为0-50
z的取值范围为(50-y)/4
x,y,z的值必须为整数,所以对每一种x,y,z的组合进行整数验证。
对符合要求的xyz进行累加操作即可
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int y,sum=0;//只需要一个y其实就可以了
for(int i=0;i<51;i++)
{
y=i;//此处穷举所有可能的y
if(((50-y)/4)%10==0)//此处判断z有没有余数,没有余数则sum加1
sum++;//只要y和z是整数,x必定是整数,不需要再多余验证。
}
printf("%d\n",sum);
return 0;
}
```