题目描述
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数n,用n文钱买n只鸡,问公鸡、母鸡、小鸡各买多少只?
输入
输入一个正整数n(n<=100)。
输出
如果有解,种组合占一行,包含公鸡、母鸡、小鸡的个数,用正整数表示,每个数据占4列。公鸡母鸡小鸡个数均大于等于0,按公鸡数目从小到大输出,公鸡数目相同按母鸡数目从小到大输出,以此类推。如果无解,输出“No Answer”。
样例输入 Copy
100
样例输出 Copy
0 25 75
4 18 78
8 11 81
12 4 84
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
bool flag = false;
int n;
cin >> n;
int g, h, c;
for ( g = 0; g <= n ; g++) {
for (h =0; h <= n; h++) {
c = n - g - h;
if ((g*15+h*9+c)==n*3) {//既然小鸡3只才1分钱,那我就整体都乘3
flag = true;
cout <<setw(4)<< g <<setw(4) << h <<setw(4)<< c << endl;
}
}
}
if (flag == false) {
cout << "No Answer" << endl;
}
return 0;
}
注意:我本来在最内层判断时这样写:if((c%3==0)&&(g*5+h*3+c)==n)。可不能这样写,因为买的小鸡未必是3的倍数.