编程题:一只大鸡3元,三只小鸡1元,如何用100块钱买100只鸡?

如题所述

简单啊。。。
大鸡为x, 小鸡数为3y(说明:这里小鸡的数量一定是3的倍数,因为100元买100只鸡,鸡不可能买小数只。。。所以大鸡的价钱不可能产生小数。在这样的情况下小鸡的价钱也不会产生小数100-3x,这样的话,必须是3的倍数才可以保证)
列出方程得到:
x+3y=100
3x+1*(3y/3)=100 =>3x+y=100;
解之,得到:
x=100-3y
3(100-3y)+y=100
300-8y=100
8y=200 , y=25
x = 25
so, 大鸡25只,小鸡75只

编程可以用计算法,如上方程。
也可以用穷举法:
python
>>> filter(lambda i: i[0]*3+i[1]/3==100 and i[0]+i[1]==100, [[x,y] for x in range(0, 101) for y in range(0, 101)])
[[25, 75]]

so, 大鸡25只,小鸡75只。

可以。。。请稍等。。。

C#版:
using System;

namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
for (int i = 0; i <= 100; i++) {
for (int j = 0; j <= 100; j++) {
//i-大鸡 j小鸡
if (i * 3 + j / 3 == 100 & i + j == 100) {
Console.WriteLine("大鸡{0}只,小鸡{1}只", i, j);
}
}
}
Console.ReadKey();
}
}
}

c版:

#include <stdio.h>
int main()
{
int i, j;
for(i=0; i<=100; i++)
for (j=0; j<=100; j++)
if (i+j==100 && 3*i+j/3==100)
printf("大鸡%d只, 小鸡%d只\n", i, j);
return 0;
}

结果都是一样的:大鸡25只,小鸡75只

优化:
反正大小鸡共100只,可以直接根据大鸡数量计算小鸡,这样去掉一层循环:从循环1万次减到100次。

#include <stdio.h>

int main()
{
int i;
for(i=0; i<=100; i++){
int j = 100 - i;
if (3*i+j/3==100)
printf("大鸡%d只, 小鸡%d只\n", i, j);
}
return 0;
}

继续优化:
小鸡的数量一定是3的整数倍,所以可以用小鸡数量来循环,可以使循环数量再减少:

#include <stdio.h>

int main()
{
int j; //小鸡的数量一定是3的整数倍
for(j=0; 3*j<=100; j++){
int i = 100 - 3*j;
if (3*i+j==100)
printf("大鸡%d只, 小鸡%d只\n", i, 3*j);
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-13
这是小学的问题吧 那就用小学的方程式解答吧 设大鸡为x 小鸡为y x=3y 格式我就不写了你怎么也会的 直接解出来 x+y=100 3y+y=100 4y=100 y=100/4 y=25 x=3y x=25*3 x=75 “ / ” 是 除号 “* ” 是乘号 我这个是最简单的解答方法了 嘿嘿
第2个回答  2011-06-12
解:设买x只大鸡,则买(100-x)只小鸡,
由题意3x+(100-x)=100
3x+100+x=100
4x=0
x=0
∴100-x=100

答:买100只小鸡。
相似回答