陈玉明::快乐编程

男人要学会品尝孤独

导航

一重循环实现百元买百鸡.

Posted on 2006-07-02 00:33  chenyuming2004  阅读(956)  评论(0)    收藏  举报

题目:

公鸡每只5元钱,母鸡每只3元钱,小鸡3只1元钱,用一百元钱买100只鸡,问公鸡。母鸡,小鸡各有多少只?有多少种可能? 

C#程序实现如下:

   for (int i = 1,j = 1,k;true;)
   {
    k = 100 - i - j;
    if ((i*5 + j*3 + k/3) == 100)
    {
     Response.Write(i.ToString() + ",");
     Response.Write(j.ToString() + ",");
     Response.Write(k.ToString() + "<br>");
    }
    if (++j > 33 )
    {
     j = 1;
     i++;
    }
    if (i > 20)
    {
     break;
    }
   }

输出结果:

3,20,77
4,18,78
7,13,80
8,11,81
11,6,83
12,4,84

如果要求后面的小鸡个数是整数的话,代码再加一个判断即可.

   for (int i = 1,j = 1,k;true;)
   {
    k = 100 - i - j;
    if ((i*5 + j*3 + k/3) == 100 && k%3 == 0)
    {
     Response.Write(i.ToString() + ",");
     Response.Write(j.ToString() + ",");
     Response.Write(k.ToString() + "<br>");
    }
    if (++j > 33 )
    {
     j = 1;
     i++;
    }
    if (i > 20)
    {
     break;
    }
   }

输出结果:

4,18,78
8,11,81
12,4,84

还要再考虑允许购买0只的情况,代码修改如下:

   for (int i = 0,j = 0,k;true;)
   {
    k = 100 - i - j;
    if ((i*5 + j*3 + k/3) == 100 && k%3 == 0)
    {
     Response.Write(i.ToString() + ",");
     Response.Write(j.ToString() + ",");
     Response.Write(k.ToString() + "<br>");
    }
    if (++j > 33 )
    {
     j = 0;
     i++;
    }
    if (i > 20)
    {
     break;
    }
   }

输出结果:

0,25,75
4,18,78
8,11,81
12,4,84