百鸡问题如何用一个for循环实现

当鸡的数量非常大时使用三个for会使计算时间非常长,所以如何用一个for实现运算

不都说了是百鸡问题了么,怎么还鸡的数量非常大呢?

百鸡问题只有一百个鸡,用一个for:

#include<iostream>
using namespace std;
int main(){
    int x,y,z;
    for(x=0;x<=20;x++)//公鸡不会超过20只
    {
        y=25-1.75*x;//先求y
        z=100-x-y;//再求z
        if(z==(300-15*x-9*y)&&z%3==0&&y>0&&&z>0)
            cout<<"x="<<x<<" "<<"y="<<y<<" "<<"z="<<z<<endl;
    }
    system("pause");
    return 0;
}

结果:

img

一个for循环


#include<iostream>
using namespace std;
int main(){
    int x,y,z;
    for(x=0;x<=20;x++)//公鸡不会超过20只
    {
        y=25-1.75*x;//先求y
        z=100-x-y;//再求z
        if(z==(300-15*x-9*y)&&z%3==0&&y>0&&&z>0)
            cout<<"x="<<x<<" "<<"y="<<y<<" "<<"z="<<z<<endl;
    }
    return 0;
}