C++实现百钱买百鸡算题

342 阅读1分钟

C++实现百钱买百鸡算题

我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

三重循环实现:

#include "iostream";

using namespace std;
int main() {
	int x, y, z;
	for (x = 0; x <= 20; x++)
	{
		for (y = 0; y <= 33; y++) {
			for (z = 0; z <= 100; z++)
			{
				if (z % 3 == 0 && x + y + z == 100 && x * 5 + y * 3 + z / 3 == 100) {
					cout << "公鸡" << x << "母鸡" << y << "小鸡" << z << endl;
				}
			}
		}
	}
	return 0;
}

二重循环实现:

#include "iostream";

using namespace std;
int main() {
	int x, y, z;
	for (x = 0; x <= 20; x++)
	{
		for (y = 0; y <= 33; y++) {
			z = 100 - x - y;
			if (z % 3 == 0 && x + y + z == 100 && x * 5 + y * 3 + z / 3 == 100) {
				cout << "公鸡" << x << "母鸡" << y << "小鸡" << z << endl;
			}
		}
	}
	return 0;
}

一重循环实现(建议先不要看答案,先自己寻找解法思路,有助于理解计数型循环和条件型循环的使用场景,也能对于不同业务进行联想。):

#include "iostream";

using namespace std;
int main() {
	int x = 0, y = 0, z = 0;
	while (true)
	{
		z = 100 - x - y;
		if (z % 3 == 0 && x + y + z == 100 && 5 * x + 3 * y + z / 3 == 100) {
			cout << "公鸡" << x << "母鸡" << y << "小鸡" << z << endl;
		}
		if (++y > 33) {
			y = 0;
			x++;
		}
		if (x > 20) {
			break;
		}
	}
	return 0;
}