百钱买鸡鸣

公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,

用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。

不定方程-->

         x+y+z=100,

         5x+3y+z/3=100,

         5x<100 => 0<x<20, 同理  0<y<33,那么z=100-x-y,

c#代码-->

for (int x=1; x<30; x++)
            {
                for (int y=1; y<33; y++)
                {
                    int z = 100 - x - y;
                    if (5*x+3*y+z*1.0/3.0 == 100)
                    {
                        Console.WriteLine("g:{0}--m:{1}--x:{2}", x, y, z);
                    }
                }
            }

python代码-->

class Calculate:
    def run():
        for x in range(1,20):
            for y in range(1,33):
                z = 100-x-y
                if 5*x +3*y +z/3 == 100:
                    print('g:{}--m:{}--x:{}'.format(x,y,z))

Calculate.run()

java-->

    private static void calculate() {
        for (int x = 1; x < 20; x++) {
            for (int y = 1; y < 33; y++) {
                int z= 100-x-y;
                if (5*x+3*y+z/3.0 == 100) {
                    System.out.println("g:"+x+"--m:"+y+
                            "--x:"+z);
                }
            }
        }
    }

以上复杂度为o(n2),进行优化-->

y = 25 - 7 * x / 4

0<3 * (25 - 7 * x / 4) < 100

y为4的倍数

z=100-x-y

c#代码-->

            for (int x=4;x<14;x+=4)
            {
                int y = 25 - 7 * x / 4;
                int z = 100 - x - y;
                Console.WriteLine("g:{0}--m:{1}--x:{2}", x, y, z);
            }

python和java代码同理

复杂度为O(n)

 

posted @ 2018-03-10 07:29  欧阳平  阅读(178)  评论(0编辑  收藏  举报