猴子吃桃问题

原题目:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。

输入

N

输出

桃子总数

样例输入

10

样例输出

1534

解题:其实这道题不难,我首先想到的是用数学办法去解它,按照正常的顺序设出总数sum,然后列出第一天、第二天、第三天吃过之后的数量,列出三个式子之后基本上就可以找到规律,然后总结出一个计算公式,当然这不难。但是,值得注意的是,这是一道编程题而不是数学题,数学题只要最后求出答案就好,编程题他是需要一个通用的算法,那说实话总结公式法就是不对的吗,当然不是,只是如果更复杂的题呢?你总结不出来公式怎么办?所以这道题给了我很大的一个启示,就是在编程的过程中最好思想简单化,具体的说,反向来看这道题无非就是一道l简单累加问题,所以应该反着来想:初始量sum=1,每天都要加上比前一天剩下多1的2倍,用一个循环累加就好了,在这里要注意控制循环的条件,应该要循环n-1次。(这里不做时间复杂度的分析)

 

源代码:

#include<stdio.h>
int main()
{
    int sum=1,n;
    scanf("%d",&n);
    for(int i=1;i<n;i++)
    {
        sum=(sum+1)*2;
    }
    printf("%d",sum);
 } 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值