c++百鸡问题之整数实数差异

百鸡问题。公鸡每只5¥,母鸡每只3¥,每3只小鸡1¥,100¥买100只鸡。

穷举法

代码1

int main(){
    
    
    int x,y,z;
    cout<<"cock\t"<<"hen\t"<<"chick\t"<<endl;
    for(x=0;x<20;x++){
    
    
        for(y=0;y<33;y++){
    
    
            z=100-x-y;
            if(x*5+y*3+z/3.0==100){
    
    
                cout<<x<<'\t'<<y<<'\t'<<z<<endl;
            }
            }
        }
    }
cock    hen     chick   
0       25      75
4       18      78
8       11      81
12      4       84

代码2

int main(){
    
    
    int x,y,z;
    cout<<"cock\t"<<"hen\t"<<"chick\t"<<endl;
    for(x=0;x<20;x++){
    
    
        for(y=0;y<33;y++){
    
    
            z=100-x-y;
            if(x*5+y*3+z/3==100){
    
    
                cout<<x<<'\t'<<y<<'\t'<<z<<endl;
            }
            }
        }
    }
cock    hen     chick   
0       25      75
3       20      77
4       18      78
7       13      80
8       11      81
11      6       83
12      4       84

为什么会出现如此情况
验证

    int x=10;
    int y = 3;
    double a=10.0;
    double b=3.0;
    cout<<x/y<<endl;
    cout<<a/b<<endl;
    cout<<x/b<<endl;
3
3.33333
3.33333

两整数相除会舍去小数
所以代码1,代码2的3.0和3不同就是如此情况
这其实也是每3个小鸡1¥的难点解决方法

猜你喜欢

转载自blog.csdn.net/m0_51641607/article/details/114384282
今日推荐