JavaScript语言编写鸡兔同笼问题

JavaScript064

JavaScript语言编写鸡兔同笼问题,第1张

<body>

请输入头数:<input type="text" id="head"/><br/><br/><br/>

请输入脚数:<input type="text" id="foot"/><br/><br/><br/>

<input type="submit" id="sub"/>

<p id="ji"></p>

<p id="tu"></p>

</body>

<script>

var input1=document.getElementById("head")

var input2=document.getElementById("foot")

var sub=document.getElementById("sub")

var ji=document.getElementById("ji")

var tu=document.getElementById("tu")

sub.onclick=function(){

var txt1=input1.value

var txt2=input2.value

for(var i=1i<txt1i++){

if(i*2+(txt1-i)*4==txt2){

ji.innerText="鸡有"+i+"只"

tu.innerText="兔有"+(txt1-i)+"只"

}

}

}

</script>

就是个二元一次方程嘛,20年没碰的东西,很生疏但大概是这么推, j是鸡、t是兔:

j + t = 1200

2j + 4t = 2800

2800 - 1200 = 2j + 4t - (j + t)

1600 = 2j + 4t - j - t

1600 = j + 3t

j + 3t - (j + t) = 1600 -1200

j + 3t - j - t = 400

2t = 400

t=200

1200 - 200 = j

j = 1000

然后 js 代码:

//条件A:鸡 + 兔 = 1200

//条件B:鸡*2 + 兔*4 = 2800

window.onload = function () {

//鸡兔都从0开始不断循环并加1,一直加到同时满足条件A、B时即为正确的值

//这个 j<2800 和 t<2800 累加的问题我也没办法解决

//js我也是半罐水,只能写个循环并给个2800这样比较大数再去暴力算解,肯定有更好的办法

for (var j = 0j <2800j++) {

for (var t = 0t <2800t++) {

if ( j + t == 1200 &&2*j+4*t==2800) {//同时满足条件A、B时即为正确的值

alert("鸡="+j+"只、"+"兔="+t+"只"+"\n"+"鸡腿="+j*2+"、兔腿="+t*4)

}

}

}

}

鸡兔同笼是中国古代著名趣题之一。大约在1500年前,《孙子算经》中就记载了这个有趣的问题。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔?算这个有个最简单的算法。(总脚数-兔的只数×总只数)÷(兔的脚数-鸡的脚数)=鸡的只数(94-35×2)÷2=12(兔子数) 总头数(35)-兔子数(12)=鸡数(23) 解释:让兔子和鸡同时抬起两只脚,这样笼子里的脚就减少了头数×2只,由于鸡只有2只脚,所以笼子里只剩下兔子的两只脚,再除以2就是兔子数。别说兔子和鸡不听话,现实中也没人鸡兔同笼。