试题 算法提高 猴子吃桃问题 上文链接:蓝桥杯之小数第n位-数组存储+直接计算版(c++实现)
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
猴子吃桃问题:猴子摘下若干个桃子,第一天吃了桃子的一半多一个,以后每天吃了
前一天剩下的一半多一个,到第n天吃以前发现只剩下一个桃子,
要求编写函数GetNumber(int n)求出猴子共摘了几个桃子。
输入格式
输入整数n。
输出格式
输出整数m。
样例输入
一个满足题目要求的输入范例。
例:
3
样例输出
与上面的样例输入对应的输出。
例:
10
数据规模和约定
输入的整数2<=n<=30.
思路展示
- 构建一个递归函数,函数表示某一天未吃桃子之前的桃子数。比如最后一天桃子剩一个;某一天桃子数是后一天的桃子数+1个的二倍。
算法展示
#include <stdio.h>
using namespace std;
int GetNumber(int n)
{
if(n==1)return 1;
return (GetNumber(n-1)+1)*2;
}
int main()
{
int n;
scanf("%d",&n);
int m = GetNumber(n);
printf("%d\n",m);
return 0;
}
下文链接:蓝桥杯真题之购物单(一分钟巧解)