前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >百钱买百鸡问题

百钱买百鸡问题

作者头像
不吃紫菜
发布2022-08-18 15:12:27
4410
发布2022-08-18 15:12:27
举报

百钱买百鸡问题

题目:公元前5世纪末,中国古代数学家张丘建在他的《算经》中提出了著名的 “百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?即一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,雏鸡一钱3只,问一百只鸡中公鸡、母鸡、雏鸡各多少?

三种解法

O(n)

思路:利用高中的参数方程求解

代码语言:javascript
复制
 /**
     * x + y + z = 100
     * 5 * x + 3 * y + z / 3 =100
     * 引用参数t来表示 x、y、z得:
     *
     * x = ( 4 * t - 300 ) / 3 ①
     * y = ( 600 - 7 * t ) / 3 ②
     * z = t ③
     *
     * 有①②得:
     * 4 * t >= 300 ④
     * 600 - 7 * t >= 0 ⑤
     *
     * ④⑤可得
     * 75 =< t <86
     */
    public static void way1(){      //O(n)
        //公鸡数量:x 母鸡数量:y 雏鸡数量:z
        int x,y,z;
        //先确定雏鸡数量范围 然后反确定公鸡母鸡数量
        for (int t = 75; t < 86 ; t++){
            x = ( 4 * t - 300 ) / 3;
            y = ( 600 - 7 * t ) / 3;
            z = t;
            //输出符合题目中两个公式的x、y、z
            if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100)){
                System.out.println("公鸡:"+x+" 母鸡:"+y+" 雏鸡:"+z);
            }
        }
    }

O(n**2)

思路:确定公鸡和母鸡,然后用体中的两个公式代换

代码语言:javascript
复制
public static void way2(){      //O(n**2)
    //公鸡数量:x 母鸡数量:y 雏鸡数量:z
    int x,y,z;
    //公鸡最多买20只
    for (x=0;x<=20;x++){
        //母鸡最多买33只
        for(y=0;y<=33;y++){
            //雏鸡和公鸡母鸡关系
            z=100-x-y;
            //雏鸡数量一定是三的倍数,且三种鸡一共百钱
            if (5*x+3*y+z/3==100 && z%3==0){
                System.out.println("公鸡:"+x+" 母鸡:"+y+" 雏鸡:"+z);
            }
        }
    }
}

O(n**3)

思路:公鸡母鸡雏鸡都全循环一遍

代码语言:javascript
复制
public static void way3(){      //O(n**3)
        //公鸡数量:x 母鸡数量:y 雏鸡数量:z
        int x, y, z;
        //公鸡最多买20只
        for (x = 0; x < 20; x++) {
            //母鸡最多买33只
            for (y = 0; y < 33; y++) {
                //雏鸡最多买300只
                for (z = 3; z < 300; z = z + 3) {
                    //找到符合这两个公式的x、y、z
                    if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100)) {
                        System.out.println("公鸡数:" + x + "母鸡数" + y + "小鸡数" + z);
                    }
                }
            }
        }
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 百钱买百鸡问题
    • 三种解法
      • O(n)
      • O(n**2)
      • O(n**3)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档