公雞5文錢一隻,母雞3文錢一隻,小雞3只一文錢,java
用100文錢買一百隻雞,其中公雞,母雞,小雞都必需要有,問公雞,母雞,小雞要買多少隻恰好湊足100文錢。python
不定方程-->c#
x+y+z=100,優化
5x+3y+z/3=100,spa
5x<100 => 0<x<20, 同理 0<y<33,那麼z=100-x-y,code
c#代碼-->orm
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代碼-->blog
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-->it
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),進行優化-->form
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)