zoukankan      html  css  js  c++  java
  • 另一个猴子吃桃子的问题

    群友提出另外一个猴子吃桃子的问题

     一个猴子第一天吃掉一半桃子,第二天吃掉前一天剩下的一半零两个,第三天吃掉剩下的一半零两个,第十天只剩下一个桃子,求第一天一共吃掉多少个桃子? 
    这道题我没有求第一天吃掉多少桃子,我算的是某一天有多少桃子,只要拿那时候的桃子数量除以2减去2即可。
    代码如下:
    <?php
    $num=10;
    $start=1;
    
    for ($i=$num-1; $i >1 ; $i--)
    { 
        $start=2*($start+2);
        echo "第{$i}天剩余{$start}个<br/>";
    }
    $start*=2;
    echo "第1天剩余{$start}个<br/>";
    exit();

    效果如图:

    然后我发现,有一个公式,就是除了第一天以外,其余的都是前一天除以2减去2,那么问题就变的简单了。

    得到规律的公式公式如下:

    然后我就发现这些规律 由于需要除以2 在再减去2,不如合并进去得到减去4 再除以2

    得到式子如下:

    这个时候就很明朗了,我们发现虽然a不好找规律,但是加上4就成为了一个乘积的数列 由于第9天的是6 就是 10*1-4 ,得到公式 

    当然第一天的要另外算,于是 n-1就等于 $num-$i 表示距离最后一天还有几天

    代码如下:

    <?php
    $num=10;
    $start=1;
    for ($i=$num-1; $i >1 ; $i--)
    { 
        $start=10*pow(2,$num-$i-1)-4;
        echo "第{$i}天剩余{$start}个<br/>";
    }
    $start*=2;
    echo "第1天剩余{$start}个<br/>";
    exit();

    效果图如下:

    对比公式如下:

  • 相关阅读:
    设计模式之设计原则
    把二叉树打印成多行
    快速排序的递归遍历和非递归遍历
    二叉树的非递归遍历
    约瑟夫环问题
    strcpy strcat strcmp memcpy函数的自己实现
    【解题模板】一些很基础的板子
    【笔记】取模运算的用法
    【OJ技巧】DSACPP pa-book中的一些提示
    【编程语言】Java基础进阶——面向对象部分
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/8795785.html
Copyright © 2011-2022 走看看