PTA-凑硬币

7-21 人民币兑换
(30分)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<stdio.h>
int main()
{
 int x,y,z;
 int n,count=0;
 scanf("%d",&n);
 for(x=1;x<30;x++)//x为5分硬币的个数
 {
  for(y=1;y<75;y++)//y为2分硬币的个数
  {
   for(z=1;z<150;z++)//z为1分硬币的个数
   {
    if(x+y+z==100&&5*x+2*y+z==150)
    {
     count++;
     if(count<=n)
     printf("%d %d %d\n",x,y,z);
    }
   }
  }
 }
 } 

二、两层循环
三、一层循环
这道题可以列两个方程
x-5分,y-2分,z-1分
5x+2y+z=150
x+y+z=100

#include<stdio.h>
int main()
{
 int n;
 scanf("%d",&n);
 int x,y,z,count=0;
 for(x=1;x<30;x++)//x为5分硬币的个数
 {
  z=3*x+50;//分别用x表示z,y
  y=50-4*x;
  if(z>1&&y>1)写出x,y的条件
  {
   count++;
   if(count<=n)
   printf("%d %d %d\n",x,y,z);
  }
 }
}
发布了15 篇原创文章 · 获赞 3 · 访问量 372

猜你喜欢

转载自blog.csdn.net/Vevean2545116309/article/details/103532570