题目:百钱买百鸡
我国古代《算经》中的“百钱买百鸡”问题:
鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
分析:
用数学方法解决。设鸡翁(🐓)x只,鸡母(母鸡)y只,鸡雏(鸡仔)z只,可得到方程组如下:
作为限制条件,应该有:
,即鸡翁不可能超过20只。20只是100钱。
,鸡母不可能超过33只;33只是99钱。
,鸡雏不可能超过100只,且必须为3的整倍数。
且均为正整数。
运算量不大,可以利用三重循环得到结果。
//-----------------------------------
#include <iostream>
using namespace std;
//------------------------------------
int accord( int i, int j, int k )
{
if( 5*i + 3*j + k/3 == 100 && k%3 ==0 && i+j+k == 100 )
return 1; //如果是百钱百鸡,返回1,正确的结果
else
return 0; //如果不是,返回0
}
//--------------------------------------
int main()
{
int i, j, k; //i:鸡翁数; j:鸡母数; k:鸡雏数
cout << "100yuan for 100 chick:" << endl;
for( i = 0; i <= 20; i++ )
for( j = 0; j <= 33; j++ )
for( k = 0; k <= 100; k++ )
if( accord( i, j, k ) )
cout << "cock:" << i << " hen:" << j << " chicken:" << k << endl;
// cin.get();
system("PAUSE");
return 1;
}
//-----------------------------------------
计算结果:
100yuan for 100 chick:
cock:0 hen:25 chicken:75
cock:4 hen:18 chicken:78
cock:8 hen:11 chicken:81
cock:12 hen:4 chicken:84
请按任意键继续. . .