百钱买百鸡问题-创新互联

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

武城ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

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

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:百钱买百鸡问题-创新互联
本文路径:http://abwzjs.com/article/cchcsj.html