百鸡百钱,在经典里总能口味出不一样的美

来源:互联网 发布:怎么查淘宝价格走势 编辑:程序博客网 时间:2024/06/10 02:46

今天随手拿到一本书,看到一些趣味的问题,第一个便是百鸡百钱问题:一只公鸡五钱,一只母鸡三钱,三只小鸡一钱。现用百钱买百鸡,请问公鸡,母鸡,小鸡各多少只?

看到这个问题,第一个想到的就是穷举循环法,即用三个循环来写遍历三种鸡,判断 鸡一百鸡且钱花一百则输出各种鸡的数量。
但是三个循环的时间成本太高,可以用组合的方法,即公鸡和母鸡的数量知道了,小鸡的数量就等于100 - gongji - muji,这样执行次数就降了100次,大量节约了时间成本,虽然在这个小程序中影响不是很大,但要是数据量大了,这是一个很可观的节省。

还有一个小细节难住了我,三只小鸡值一钱该怎么表示呢?是应该用浮点数吗?

若小鸡不能被3整除,即小鸡的个数不是3的位数,钱当然也不能为0整娄,即钱数达不到整数100,在判断的时候
if( gongji + muji + xiaoji == 100 && gongji*5 + muji*3 + xiaoji / 3.0 == 100)
若不用浮点数计算,会把一些不能整除的数的结果看成能整除的,导致输出了不符合的结果

    int gongji;    int muji;    int xiaoji;    for( gongji = 0; gongji < 20; gongji++)    {        for(muji = 0; muji < 33; muji++)        {            xiaoji = 100 - gongji - muji;            //小鸡个数除以3的问题:若小鸡不能被3整除,则达不到整数100,若不用浮点数计算,会把一些不能整除的数的结果看成能整除的,导致输出了不符合的结果            if( gongji + muji + xiaoji == 100  &&  gongji*5 + muji*3 + xiaoji / 3.0 == 100)                    printf("公鸡:%d,母鸡:%d,小鸡:%d\n",gongji,muji,xiaoji);           }    }
0 0
原创粉丝点击