zoukankan      html  css  js  c++  java
  • C语言经典算法100例-021-猴子吃桃问题

    有前面几道题的基础,这道题还是比较简单的,我们来看问题:
    猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
    1.分析,我们先来看看这个问题的数学模型:

    设n为第一天摘的桃子数。那么根据已知条件有:

    s1=n/2-1;

    s2=s1/2-1;

    ...

    s10=s9/2-1=1;

    那么很显然有:

    s9=(s10+1)*2;

    s8=(s9+1)*2;

    ...

    s1=(s2+1)*2;

    s0=(s1+1)*2=n;

    那么利用10趟循环就可以解决问题。

    2.我们来看源代码:

    #include <stdio.h>
    #include <stdlib.h>
    //猴子吃桃问题
    int main()
    {
        int n=1;
        int day=10;
        while(day>0)
        {
            n=2*(n+1);  //昨天的桃子数等与今天桃子数加1的二倍
            day--;
        }
        printf("Totally %d peaches!
    ",n);
    }

    这里为了方便理解是从10到1循环,其实怎么循环都行,只要保证循环次数是10即可。

  • 相关阅读:
    BufferedOutputStream
    BufferedInputStream
    IO异常 的处理
    FileOutStream
    FileInputStream
    File常用的方法
    IO流
    枚举
    jdk1.5新特性之-----自动装箱与自动拆箱
    jdk1.5新特性之------->可变参数
  • 原文地址:https://www.cnblogs.com/mrbourne/p/9959503.html
Copyright © 2011-2022 走看看