【问题】
已知公鸡5元一只、母鸡3元一只,小鸡一元三只,用100元钱买100只鸡,问公鸡,母鸡,小鸡各多少只?
【想法】
设公鸡、母鸡和小鸡的个数分别为x,y,z,则:
x + y + z = 100
5x + 3y + z/3 = 100
且 0 <=x <= 20 0<= y <= 33 0 <= z <= 100
将百元百鸡问题转化为求方程组的解,可以用蛮力法依次求解,试探x,y,z的值使方程组成立
【算法实现】
可以设count表示解的个数,注意到小鸡一元三只,在判断总价是否满足方程时要先判断z是否是3的倍数。程序如下:
代码
#include<iostream>
void Chicken(){
int x, y, z;
int count = 0;
for(x = 0; x <= 20; x++){
for(y = 0; y <= 33; y++){
z = 100 - x - y; //满足100只
if((z % 3 == 0) && (5 * x + 3 * y + z / 3 == 100)){ //满足总价100元
count++; //求解的个数加1
std::cout << "公鸡:" <<x<< "母鸡:" <<y<< "小鸡" <<z<<std::endl;
}
}
}
if (count == 0)
std::cout<< "问题无解" <<std::endl;
}
int main(){
Chicken();
}