注册 登录
编程论坛 C++教室

100元买100只鸡问题

me100422 发布于 2013-09-05 23:41, 961 次点击
100元买100只鸡,母鸡每只5元,公鸡每只3元,小鸡每3只1元,请问能买多少只母鸡,多少只公鸡,多少只小鸡?
用了下面的程序 不知道为什么没有输出结果
#include<iostream>
using namespace std;
int main()
{
    int x=0,y=0,z;
    while(x<=20)
    {
        while(y<=33)
        {
            z=(100-5*x-3*y)/3;
            
        
            if((x+y+z)==100)
            {
                cout<<x<<endl;
                cout<<y<<endl;
                cout<<z<<endl;
            }
            y++;
        }
        x++;
    }

    return 0;
}
10 回复
#2
未未来2013-09-05 23:56
程序代码:
while(y<=33)
        {
            z=(100-5*x-3*y)/3;
            
        
            if((x+y+z)==100)
            {
                cout<<x<<endl;
                cout<<y<<endl;
                cout<<z<<endl;
            }
y=0;//这个地方要把y归于0吧  但是我试了 还是没有输出,这题目无解???
            y++;


[ 本帖最后由 未未来 于 2013-9-6 00:28 编辑 ]
#3
peach54602013-09-06 10:33
因为算法错了,所以无解
#4
未未来2013-09-06 11:10
程序代码:
#include<iostream>
using namespace std;
int main(){
int x=0,y=0,z=0;
while(z<=300){
    int m=z/3;
    while(x<=20){
            while(y<=33){
        if(5*x+3*y==(100-m)&&x+y+z==100){
            cout<<x<<endl;
            cout<<y<<endl;
            cout<<z<<endl;
            cout<<endl;
            }
            ++y;
}
y=0;
++x;
}
x=0;
z+=3;
}
return 0;
}

这个是我写,
#5
wp2319572013-09-06 11:14
大约这个样子就差不多了
程序代码:
#include<iostream>

using namespace std;

int main()
{
    int x=0,y=0,z;
    for(x=1;x<=20;x++)
    {
        for(y=1;y<=33;y++)
        {
            z=(100-5*x-3*y)*3;
            if((x+y+z)==100 && z>0)
            {
                cout<<x<<"+"<<y<<"+"<<z<<"="<<x+y+z<<endl;
            }
         }
     }
   
    return 0;
}


#6
c108682013-09-06 15:00
经测试4楼和5楼的都行 4楼的多了一组 0 25 75的结果
#7
小男孩的围裙2013-09-06 20:25
4楼是正确的,5楼有些细节没注意。
#8
小男孩的围裙2013-09-06 20:31
4楼是正确的,5楼有些细节没注意。
5楼  int x=0,y=0,z;
但是在  for里又把1赋值给了x和y,导致当x=0的时候的情况未能出现。
把for(x=1;x<=20;x++)和for(y=1;y<=33;y++)改一下,改成for(x=0;x<=20;x++)和for(y=0;y<=33;y++),
这样所得到的答案就完整了。和4楼的答案一样。
#9
wp2319572013-09-07 08:30
这道题目里 0的答案是不能考虑的
#10
c108682013-09-16 23:00
我是新手,4和5楼的解答堪称while和for循环的经典。一晚上无聊,经过几次的实践最后终于学会了二种方法。
重点是花括号的应用。
个人感觉for循环比while更加实用。
#11
3037709572013-09-17 17:26
思路:
设可买鸡翁i只,鸡母j只,则鸡雏为100-i-j只,
那么有:5i+3j+(100-i-j)/3=100
整理得:7i+4j=100
即:7i=4(25-j)>=0,
根据题意可知0<=j<=25,0<=i<=14
并且i是4的倍数【因为4(25-j)是正数,所以7i必须能被4整除】。
故编写代码如下:
#include <iostream>
using namespace std;
int main()
{
     int i,j;
     for(i=0;i<=14;i=i+4)
     {
        for(j=0;j<=25;j++)
        {
            if(7*i==4*(25-j))
            {
                cout<<"鸡翁:"<<i
                <<"只 鸡母:"<<j
                <<"只 鸡雏:"<<100-i-j
                <<"只"<<endl;
            }
        }
     }
     return 0;
}
运行结果如下:
---------------------------
鸡翁:0只 鸡母:25只 鸡雏:75只
鸡翁:4只 鸡母:18只 鸡雏:78只
鸡翁:8只 鸡母:11只 鸡雏:81只
鸡翁:12只 鸡母:4只 鸡雏:84只
---------------------------
1