算法笔记001——鸡兔同笼

一个笼子里面关了鸡和兔子(鸡有 2 只脚,兔子有 4 只脚,没有例外)。

已经知道了笼子里面脚的总数 a,问笼子里面 至少 有多少只动物, 至多 有多少只动物?

————————————————————————————————————————

这个是小学四年级学解方程就做过的题,那时候也学了很多种方法:

让鸡抬起一只脚变成“金鸡独立”,让兔子站起来变成两脚兔,头脚的差就是兔子的只数;

解方程设鸡或者兔子的数量为x,另一个动物就是(头数量-x),再对方程求解得出答案;

甚至说还能列表和画图......

#include <cstdio>
int main()
{
    int jiao,mmin,mmax;
    printf("请输入脚的数量。\n");
    scanf("%d",&jiao);
    if(jiao%2!=0)
        printf("输入错误!!!\n");
    else
    {
        mmin = (jiao+3)/4;
        mmax = jiao/2;
        printf("最少动物数:%d\n最多动物数:%d\n",mmin,mmax);
    }
    return 0;
}

假设输入的脚的数量是10,那最少就是两只兔子一只鸡,最多就是五只鸡;

这个题的意义就是为了完成向上取整的操作;

mmin = (jiao+3)/4;

这行代码就完成了向上取整的操作,也就是:

结果=(被除数+除数-1)+除数;

这样就能实现啦~

(向上取整就是例如10/2=5,10/3=4这样)

(计算机这种01笨蛋可不知道有余数就加一这种思想)

根据这种想法还可以写出四舍五入的代码(加0.5)

————————————————————————————————————————

撒花~~~

鸡兔同笼结束啦~~~

猜你喜欢

转载自www.cnblogs.com/jun-ruo-sui-nian/p/suijun_001.html