定义一个类,求解百钱百鸡问题。我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一只钱五,鸡母一只钱三,鸡雏三只钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?类中包括,鸡翁、鸡母、鸡雏各自数量的3个私有成员,其各自价格如上所述,求任意钱数下,是否有解,无解情况下输出:此题无解,有解情况下依次输出所有解。
输入格式:
输入钱数。
输出格式:
无解情况下输出:此题无解;
有解情况下依次输出所有解。
输入样例:
在这里给出一组输入。例如:
100(100为钱数)
输出样例:
在这里给出相应的输出。例如:
公鸡0只,母鸡25只,小鸡75只
公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84只
输入样例:
在这里给出一组输入。例如:
495
输出样例:
在这里给出相应的输出。例如:
此题无解
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<iostream>
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;
}
利用三层循环求解
保持热爱 奔赴星海 ^_^