zoukankan      html  css  js  c++  java
  • 百钱买百鸡

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

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

    static void Main(string[] args)
    {
        int x, y, z; //x为公鸡,y为母鸡,z为小鸡
        for (x = 0; x <= 100 / 5; x++)
        {
            for (y = 0; y <= 100 / 3; y++)
            {
                z = 100 - x - y;
                if ((5 * x + 3 * y + z / 3 == 100) && (z % 3 == 0))
                {
                    Console.WriteLine("公鸡=" + x + "母鸡=" + y + "小鸡=" + z);
                }
            }
        }
    }

    那如果我们用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

  • 相关阅读:
    金额转中国大写
    double 四舍五入保留一定的位数
    通过ajax提交表单上传文件
    微信扫码提示浏览器打开的
    在Servlet中获取spring容器WebApplicationContext
    Oracle CONNECT by 简单用法
    JS 删除Array对象中的元素。
    数据导出excel
    DWZ 在js中刷新某个navTab
    Python发送邮件
  • 原文地址:https://www.cnblogs.com/guwei4037/p/3499333.html
Copyright © 2011-2022 走看看