桐桐周末陪妈妈到市场购物。她和妈妈来到一个买鸡的摊位,发现鸡的价格有三种:公鸡每只5元钱,母鸡每只3元钱,小鸡3只1元钱。妈妈就给桐桐出了一道计算题:如果用n元钱买m只鸡,问公鸡、母鸡和小鸡可以各买多少只?注意:必须把n元钱正好用完,且买的各种鸡的只数为大于等于0的整数。桐桐回到家里便拿起笔来认真计算,算了好久还没得出答案。聪明的你通过编写程序帮助桐桐找出结果好吗?
输入
只有1行,两个数n和m 0<n,m≤20000。
输出
有若干行,每行有三个数,分别为公鸡、母鸡和小鸡的只数,用空格隔开,按照公鸡只数升序排列。
样例输入 Copy
100 100
样例输出 Copy
0 25 75 4 18 78 8 11 81 12 4 84
思路:
设三种鸡的数目分别为x,y,z。则满足两个关系式为:
x+y+z=m;
5x+3y+z/3=n;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int x=0;x<=n/5;x++) //因为题目要求按公鸡数目升序排列,所以公鸡数目在最外层循环,并从小到大枚举
{
for(int y=0;y<=n/3;y++)
{
if((5*x+3*y+(m-x-y)/3)==n&&(m-x-y)%3==0) //这里必须满足两个数学关系
{
printf("%d %d %d\n",x,y,m-x-y);
}
}
}
return 0;
}