【题目描述】
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。
【输入描述】
一行,表示第N天
【输出描述】
桃子总数
【样例输入】
10
【样例输出】
1534
【题目分析】
(1)如果N是定值可以当成小学奥数题来反推
(2)可以采用逆向思维,从后往前推
【参考代码1】
#include<cstdio> int main() { int n,i,s=1; scanf("%d",&n); for(i=0; i<n-1; i++) s=2*(s+1); printf("%d",s); return 0; }
【增加难度】
这是一道比较简单的递推题,根据公式推导即可,但是可以把这个题目加大难度,比如N<=100。那么普通的做法就会超范围。如果我把代码改成下面的样子
#include<cstdio> int main() { long long n,i,s=1; scanf("%d",&n); for(i=0; i<n-1; i++) s=2*(s+1); printf("%lld",s); return 0; }
最多支持62位,距离100位还有一段,所以要考虑使用高精度了。
返回目录:题解目录