回 帖 发 新 帖 刷新版面

主题:百鸡问题的疑惑

公鸡每只值5 文钱,母鸡每只值3 文钱,而3 只小鸡值1 文钱。现在用100 文钱买100 只鸡,问:这100 只鸡中,公鸡、母鸡和小鸡各有多少只?

通过网上查找资料得出结果为
0,25,75
4,18,78
8,11,81
12,4,84
我的疑惑就是为什么19,1,6不行呢?

回复列表 (共9个回复)

沙发

19,1,6 加起来等于100吗?

板凳

这样的题我记得小时候爸爸经常出给我做

3 楼

[code=c]
int main()
{
    //5x+3y+z=100 x:公鸡数 y:母鸡数 z:小鸡数
    for(int x=0; x<=100/5; x++)
        for(int y=0; y<=(100-5*x)/3; y++)
            {
                int z=100-5*x-3*y;
                if(z>=0)
                    std::cout<<"公鸡数:"<<x<<std::endl
                             <<"母鸡数:"<<y<<std::endl
                             <<"小鸡数:"<<z<<std::endl
                             <<std::endl;            
            }
    return 0;

}[/code]

4 楼

alw同学的代码无疑不太正确,得不到正确的解,因为原题的两个约束是:
x+y+z=100
5x+3y+z/3=100
有人化简过这个约束,把代码改成单循环了,一样可以出正确结果的,而且时间代价更低,呵呵

5 楼

[quote]alw同学的代码无疑不太正确,得不到正确的解,因为原题的两个约束是:
x+y+z=100
5x+3y+z/3=100
有人化简过这个约束,把代码改成单循环了,一样可以出正确结果的,而且时间代价更低,呵呵[/quote]
化简后为 7x+4y=100
其实就能看出 x 只能取 0, 4, 8, 12
(如果看不出的话,可以变形为 7/4*x = 25-y,因为y为整数,所以25-y为整数,所以x必须是4的倍数)

for( unsigned x=0; x<=100/7; x+=4 )
{
   y是 (100-7×x) / 4
   z是 100 - x - y
   输出 x,y,z
}

6 楼

太失败了  没看清题  这会丢大了 不好意思

7 楼


19*5+1*3+6*1/3=100
没错呀

8 楼

[quote]
19*5+1*3+6*1/3=100
没错呀[/quote]
问题在于百钱要买的是“百鸡”
19+1+6=26吧……跟100差得还是比较远的

9 楼

了解了。。谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册