鸡兔同笼问题

题目

		有若干只鸡兔同在一个笼子里,从上面数,有a=35个头,从下面数,有b=94只脚。问笼中各有多少只鸡和兔? 
  1. 正常情况

  2. 解题方法
    设鸡有x只,兔有y只。

  3. 列方程
    x+y=a
    2x+4y=b
    解方程得
    y=0.5b-a
    x=a-y

  4. 代码

#include
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. 万一笼子里是其它动物呢?它们的脚数不确定,不妨一个动物1,一个动物2,“两动物同笼”。

  2. 解题方法
    设动物1有m个脚,动物2有n个脚。已知共a=35个头,b=94只脚,则动物1有x只,动物2有y只。

  3. 列方程如下
    x+y=a
    mx+ny=b
    解方程可得
    y=(ma - b) / (m - n)
    x=a - y

  4. 代码

#include
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张图片

第二次转折点

  1. 如果有一天外星生物双头怪物被抓在了笼子里,“两怪物同笼”,上述代码将无能为力。

  2. 解题方法
    设每个怪物1有A个头,m个脚,怪物2有B个头,n个脚。已知共a=35个头,b=94只脚,则怪物1有x只,怪物2有y只。

  3. 列方程如下
    Ax+By=a
    Amx+Bny=b
    解方程可得
    y=(ma - Ab) / (Bm - An)
    x=(a - By)/A

  4. 代码

#include
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;
}

让我们运行一下(仍以鸡兔同笼数据为例)

鸡兔同笼问题_第2张图片
… …

你可能感兴趣的:(C++,c++)