百钱百鸡问题(C++)

定义一个类,求解百钱百鸡问题。我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一只钱五,鸡母一只钱三,鸡雏三只钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?类中包括,鸡翁、鸡母、鸡雏各自数量的3个私有成员,其各自价格如上所述,求任意钱数下,是否有解,无解情况下输出:此题无解,有解情况下依次输出所有解。

输入格式:

输入钱数。

输出格式:

无解情况下输出:此题无解;
有解情况下依次输出所有解。

输入样例:

在这里给出一组输入。例如:

100(100为钱数)

输出样例:

在这里给出相应的输出。例如:

公鸡0只,母鸡25只,小鸡75只
公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只

输入样例:

在这里给出一组输入。例如:

495

输出样例:

在这里给出相应的输出。例如:

此题无解

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include
using namespace std;

class combination
{
	friend void judge(combination& gg, int n);//将判断的函数设置成类的友元 从而在类外访问私有成员属性
private:
	int cock;
	int hen;
	int chick;
};

void judge(combination& gg, int n)//传入的为对象的引用(地址传递)
{
	int mark = 1;//判断是否有解的标记
	for (gg.cock = 0; gg.cock <= n / 5; gg.cock++)
		for (gg.hen = 0; gg.hen <= n / 3; gg.hen++)
			for (gg.chick = 0; gg.chick <= n; gg.chick++)//这里不代表小鸡数量,而是买小鸡花的钱
				if (gg.cock + gg.hen + 3 * gg.chick == 100 && 5 * gg.cock + 3 * gg.hen + gg.chick == n)
				{
					printf("公鸡%d只,母鸡%d只,小鸡%d只\n", gg.cock, gg.hen, 3 * gg.chick);
					mark = 0;
				}
	if (mark) cout << "此题无解";
}

int main()
{
	int n; cin >> n;

	combination gg;
	judge(gg, n);

	return 0;
}

   百钱百鸡问题(C++)_第1张图片     利用三层循环求解

    保持热爱 奔赴星海 ^_^

 

 

你可能感兴趣的:(c++,算法,开发语言)