百钱买百鸡

简介: 题目:用100文钱买来100只鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只。问:在这100只鸡中,公鸡、母鸡、小鸡各是多少只?按照传统的解法,我们可以这么做: sta...

题目:用100文钱买来100只鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只。问:在这100只鸡中,公鸡、母鸡、小鸡各是多少只?

按照传统的解法,我们可以这么做:

        static void Main(string[] args)
        {
            for (int x = 0; x <= 100 / 5; x++)
            {
                for (int y = 0; y <= 100 / 3; y++)
                {
                    for (int z = 0; z <= 100; z++)
                    {
                        if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100) && (z % 3 == 0))
                        {
                            Console.WriteLine("x:" + x + " y:" + y + " z:" + z);
                            break;
                        }
                    }
                }
            }
        }
那如果我们用linq的写法,可以这么写:

        static void Main(string[] args)
        {
            var query = from 公鸡 in Enumerable.Range(0, 20)
                        let m1 = 100 - 公鸡 * 5
                        from 母鸡 in Enumerable.Range(0, m1 / 3)
                        where 公鸡 + 母鸡 <= 100
                        let m2 = m1 - 母鸡 * 3
                        where m2 >= 0
                        let 小鸡 = m2 * 3
                        where 公鸡 + 母鸡 + 小鸡 == 100
                        select new { 公鸡, 母鸡, 小鸡 };
            int cn = 0;
            foreach (var x in query)
                Console.WriteLine("方案{0}: 公鸡={1},母鸡={2},小鸡={3}", ++cn, x.公鸡, x.母鸡, x.小鸡);
            Console.ReadKey();
        }
两种解法,读者自行体会。

答案:

方案1: 公鸡=0,母鸡=25,小鸡=75
方案2: 公鸡=4,母鸡=18,小鸡=78
方案3: 公鸡=8,母鸡=11,小鸡=81
方案4: 公鸡=12,母鸡=4,小鸡=84

目录
相关文章
|
6月前
|
机器学习/深度学习 并行计算 定位技术
NYOJ22-吝啬的国度
NYOJ22-吝啬的国度
29 0
7-10 百钱百鸡
百鸡问题:“今有鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。凡百钱买鸡百只,问鸡翁母雏各几何。” 百鸡问题是北魏数学家张丘建在《张丘建算经》中提出的一个世界著名的不定方程问题,它给出了由三个未知量的两个方程组成的不定方程组的解。
7-10 百钱百鸡
|
6月前
国王的魔镜
国王的魔镜
53 0
|
6月前
|
C++
百钱百鸡(代码实现)
百钱百鸡(代码实现)
73 0
华为机试HJ72:百钱买百鸡问题
华为机试HJ72:百钱买百鸡问题
114 0
尼科彻斯定理
1.题目概述 2.题解 思路分析 具体实现
103 0
百钱买百鸡
百钱买百鸡
80 0
|
存储 机器学习/深度学习 算法
蓝桥杯十大常见天阶功法——虫之呼吸.贰之型.二分
蓝桥杯十大常见天阶功法——虫之呼吸.贰之型.二分
273 0
蓝桥杯十大常见天阶功法——虫之呼吸.贰之型.二分