鸡兔同笼问题
题目
有若干只鸡兔同在一个笼子里,从上面数,有a=35个头,从下面数,有b=94只脚。问笼中各有多少只鸡和兔?
-
正常情况
-
解题方法
设鸡有x只,兔有y只。 -
列方程
x+y=a
2x+4y=b
解方程得
y=0.5b-a
x=a-y -
代码
#include<iostream>
using namespace std;
int main()
{
int a,b,x,y;
cout << "鸡兔头总量";
cin >> a;
cout << "鸡兔脚总数";
cin >> b;
y = 0.5*b-a;
x = a - y;
cout << "兔有 " << x <<"只"<< endl;
cout << "鸡有 " << y <<"只"<< endl;
return 0;
}
让我们运行一下

转折点
-
万一笼子里是其它动物呢?它们的脚数不确定,不妨一个动物1,一个动物2,“两动物同笼”。
-
解题方法
设动物1有m个脚,动物2有n个脚。已知共a=35个头,b=94只脚,则动物1有x只,动物2有y只。 -
列方程如下
x+y=a
mx+ny=b
解方程可得
y=(ma - b) / (m - n)
x=a - y -
代码
#include<iostream>
using namespace std;
int main()
{
int a,b,m,n,x,y;
cout << "动物1脚个数";
cin >> m;
cout << "动物2脚个数";
cin >> n;
cout << "动物1和动物2头总量";
cin >> a;
cout << "动物1和动物2脚总数";
cin >> b;
y = (m * a - b) / (m - n);
x = a - y;
cout << "动物1有 " << x <<"只"<< endl;
cout << "动物2有 " << y <<"只"<< endl;
return 0;
}
运行结果(仍以鸡兔同笼数据为例)

第二次转折点
-
如果有一天外星生物双头怪物被抓在了笼子里,“两怪物同笼”,上述代码将无能为力。
-
解题方法
设每个怪物1有A个头,m个脚,怪物2有B个头,n个脚。已知共a=35个头,b=94只脚,则怪物1有x只,怪物2有y只。 -
列方程如下
Ax+By=a
Amx+Bny=b
解方程可得
y=(ma - Ab) / (Bm - An)
x=(a - By)/A -
代码
#include<iostream>
using namespace std;
int main()
{
int A,B,a,b,m,n,x,y;
cout << "怪物1头数";
cin >> A;
cout << "怪物2头数";
cin >> B;
cout << "怪物1脚个数";
cin >> m;
cout << "怪物2脚个数";
cin >> n;
cout << "怪物1和怪物2头总量";
cin >> a;
cout << "怪物1和怪物2脚总数";
cin >> b;
y = (m * a - A*b) / (B*m - A*n);
x = (a - B*y)/A;
cout << "怪物1有 " << x <<"只"<< endl;
cout << "怪物2有 " << y <<"只"<< endl;
return 0;
}
让我们运行一下(仍以鸡兔同笼数据为例)

… …