| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2116 人关注过本帖
标题:百钱买百鸡
只看楼主 加入收藏
XMeLoDy
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2007-10-4
收藏
 问题点数:0 回复次数:16 
百钱买百鸡
一只公鸡5钱,一只母鸡3钱,3只小鸡1钱,
问100钱买100只鸡有几种方案,每种方案分别要有公鸡\母鸡\小鸡;
我的程序如下:(哪错了,请指点!??)
main()
{
 int x,j,z;
 int b;
 int n=0;
 int a;
 for(x=1;x<=20;x++)
  for(j=1;j<=33;j++)
   for(z=1;z<=100-x-j;z++)
    {

    b=x*5+j*3+(1/3)*z;
    if(b==100&&x+j+z==100)
    {n+=1;
    printf("%d  %d  %d\n",x,j,z);}
    }
    printf("%d\n",n);
}

[[italic] 本帖最后由 XMeLoDy 于 2008-1-8 20:20 编辑 [/italic]]
搜索更多相关主题的帖子: 公鸡 小鸡 
2008-01-08 20:02
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
1.注意这条语句
b=x*5+j*3+(1/3)*z;
其中
1/3 = 0

2.如果令x, j 从0开始循环,z=100-x-j, 可以少一层循环。
2008-01-08 20:26
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
同意楼上的第一点说法..
但是要怎么修改呢?
2008-01-08 21:11
zbqf109
Rank: 1
等 级:新手上路
帖 子:289
专家分:0
注 册:2006-12-31
收藏
得分:0 
写程序之前先简单分析一下,这个是三元一次方程:
(1)  x * 5 + y * 2 + z / 3 = 100
(2) x + y + z = 100
可以得到两点(都是很明显的):
(1) z是3的倍数
(2) z < 100, x < 20, y < 34
利用这两点去做题,就容易了一些。
程序代码:
for (z = 0; z < 100; z += 3)
{
     for (x = 0; x < 20; x++)
     {
               y = 100 - x - z;
               if (100 == x * 5 + y * 3 + z / 3)
                    printf("x = %d, y = %d, z = %d", x, y, z);
     }
}


[[italic] 本帖最后由 zbqf109 于 2008-1-8 22:10 编辑 [/italic]]

坚决不跟用TC的人打交道!
2008-01-08 22:07
LIUHAISEN
Rank: 1
来 自:广东韶关
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-1-8
收藏
得分:0 
我来帮你改一下吧!!!!
#include "stdio.h"
      main()
       { int x, y, z,i;
     
        for ( x=0;x<=20; x++)
               for( y=0;y<=34;y++)
            { z=100-x-y;
              if( (z%3==0)&&(5*x+3*y+z/3==100) )
              {printf ( "公鸡=%d ,母鸡=%d ,小鸡=%d\n",x ,y z);
                 }
             }
         }
2008-01-09 15:40
NO.Tomato
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2008-1-5
收藏
得分:0 
很简单的改法!!!
把b=x*5+j*3+(1/3)*z;改为b=x*5+j*3+(1.0/3)*z;
就行了
1.0/3其结果为一浮点行

Let's do it now.
2008-01-09 16:01
XMeLoDy
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2007-10-4
收藏
得分:0 
回复 4# 的帖子
因为公鸡母鸡小鸡都要有,
所以循环不能从零开始,从1
变量Z是小鸡吧,Y是母鸡吧?
y = 100 - x - z不行,会出现负数,因为Z的范围达到99
2008-01-11 16:20
XMeLoDy
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2007-10-4
收藏
得分:0 
回复 2# 的帖子
公鸡母鸡小鸡都要有,所以不能从0吧?
2008-01-11 16:21
XMeLoDy
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2007-10-4
收藏
得分:0 
回复 5# 的帖子
{printf ( "公鸡=%d ,母鸡=%d ,小鸡=%d\n",x ,y z);

少了个逗号,修改后,,结果为什么跟我的不一样啊,,,但是条件都成立了;
main()
{
int x,j,z;
int b;
int n=0;
int a;
for(x=1;x<=20;x++)
  for(j=1;j<=34;j++)
   for(z=1;z<=100-x-j;z++)
    {

    b=x*5+j*3+(1/3.0)*z;
    if((b==100)&&(x+j+z==100))
    {n+=1;
    printf("%d  %d  %d\n",x,j,z);}
    }
    printf("%d\n",n);
}
2008-01-11 16:52
gdsing
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-1-24
收藏
得分:0 
main()
{
    int cocks,hens,chicks;
    float sum;
    for (cocks=1;cocks<=19;cocks++ )
    {
        for (hens=1;hens<=33;hens++ )
        {
            chicks=100-cocks-hens;
            sum=cocks*5.0+hens*3.0+chicks/3.0;
            if(sum==100) printf("%d %d %d\n",cocks,hens,chicks);
        }
    }
}
收到的鲜花
  • 外部三电铃2008-01-24 17:01 送鲜花  2朵   附言:我很赞同
2008-01-24 16:42
快速回复:百钱买百鸡
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019010 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved