`
qiufeihu
  • 浏览: 33449 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C语言算法之百元买百鸡

阅读更多

中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱买百鸡问题”,鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁,母,雏各几何?

代码如下:

#include <stdio.h>
int main()
{
	int cock,hen,chick;                               /*定义变量为基本整型*/
	for(cock = 0;cock <= 20;cock++)                   /*公鸡范围在0~20之间*/
		for(hen = 0;hen <= 33;hen++)                  /*母鸡范围在0~33之间*/
			for(chick = 3;chick <= 99;chick++)        /*小鸡范围在3~99之间*/
				if(5*cock + 3*hen + chick/3 == 100)   /*判断钱数是否等于100*/
					if(cock + hen + chick == 100)      /*判断购买的鸡数是否等于100*/
						if(chick % 3 == 0)            /*判断小鸡数是否能被3整除*/
							printf("公鸡:%d 母鸡:%d 小鸡:%d\n", cock,hen,chick);
}

运行结果:

公鸡:0 母鸡:25 小鸡:75

公鸡:4 母鸡:18 小鸡:78

公鸡:8 母鸡:11 小鸡:81

公鸡:12 母鸡:4 小鸡:84

分享到:
评论
1 楼 kyzaqlx 2015-06-26  
题主代码搞复杂了

设:公鸡=x 母鸡=y 小鸡=z
则:5 * x + 3 * y + z / 3 = 100 且 x + y + z = 100
得:y = 25 - 7 * x / 4 且 z = 75 + 3 * x / 4
由:y >= 0 且 为整数
得:0 <= x <= 14 且 x % 4 = 0
故:代码如下
public class OJ {
    public static void main(String[] args) {
        for (int cock=0; cock<=12; cock+=4) {
            int hen = 25 - 7 * cock / 4;
            int chick = 75 + 3 * cock / 4;
            System.out.println(cock + " " + hen + " " + chick);
        }
    }
}

相关推荐

Global site tag (gtag.js) - Google Analytics