问题 C: 百鸡问题
1.描述
用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。
输入
测试数据有多组,输入n。
输出
对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。
样例输入
40
样例输出
x=0,y=0,z=100
x=0,y=1,z=99
x=0,y=2,z=98
x=1,y=0,z=99
提示
不会出现给出的钱买不到100只鸡的情况!
2.代码
方法一
#include
int main()
{
double x,y,z,n;
while(scanf("%lf",&n)!=EOF)
{
for(x=0;x<=100;x++)
{
for(y=0;y<=100;y++)
{
for(z=0;z<=100;z++)
{
if(5.0*x+3.0*y+(1.0/3)*z<=n&&x+y+z==100)
{
printf("x=%.0lf,y=%.0lf,z=%.0lf\n",x,y,z);
}
}
}
}
}
return 0;
}
方法二
#include
int main()
{
int n,x,y,z;
while(scanf("%d",&n)!=EOF)
{
for(x=0;x<=100;x++)
{
for(y=0;y<=100;y++)
{
for(z=0;z<=100;z++)
{
if(x+y+z==100&&x*5+y*3+z/3.0<=n)
{
printf("x=%d,y=%d,z=%d\n",x,y,z);
}
}
}
}
}
return 0;
}
聚餐人数统计问题
马克思手稿中有这样一道趣味数学题:男人、女人和小孩总计n个人,在一家饭店里吃饭,共花了cost先令,每个男人各花3先令,每个女人各花2先令,每个小孩各花1先令,请用穷举法编程计算男人、女人和小孩各有几个。
输入
输入两个正整数,表示人数n和花费cost。
输出
若问题有解,则输出所有解,每行输出三个数据,代表男人、女人和小孩的人数,用空格分隔;若问题无解,则输出“No answer"。
样例输入
30 50
样例输出
0 20 10
1 18 11
2 16 12
3 14 13
4 12 14
5 10 15
6 8 16
7 6 17
8 4 18
9 2 19
10 0 20
2.代码
#include
int main()
{
int x,y,z,j,k,f=0;
scanf("%d%d",&j,&k);
for(x=0;x<=j;x++)
{
for(y=0;y<=j;y++)
{
for(z=0;z<=j;z++)
{
if(3*x+2*y+1*z==k&&x+y+z==j)
{
printf("%d %d %d\n",x,y,z);
f=1;
}
}
}
}
if(f==0)
{
printf("No answer");
}
return 0;
}
1369: 百钱买百鸡
1.描述
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?
输入
输入一个正整数n(n<=100)。
输出
如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。
样例输入
100
样例输出
0 25 75
4 18 78
8 11 81
12 4 84
2.代码
#include
int main()
{
int n,x,y,z,f=0;
while(scanf("%d",&n)!=EOF)
{
f=0;
for(x=0;x<=100;x++)
{
for(y=0;y<=100;y++)
{
for(z=0;z<=100;z++)
{
if(x+y+z==n&&x*5+y*3+z/3.0==n)
{
printf("%4d%4d%4d\n",x,y,z);
f=1;
}
}
}
}
if(f==0)
{
printf("No Answer\n");
}
}
return 0;
}
本文分享 CSDN - 汤米先生。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。