一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?(由于数据庞大,请使用long long 整数类型)
输入格式:
输入在一行中给出正整数N(1<N≤100)。
输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
解题思路 :
题目是求 摘了多少桃子 → 就是说 求得是没吃前的桃子数
而题设告知 第N 天的时候 猴子手上还有 1个桃子 (此时 未吃 )
那么不妨从 每天猴子未吃时,桃子还剩多少个 的角度来思考
由题意 第n天 有一个桃子
第(n-1)天 有(1+1)*2 个桃子
第(n-2) 天 还剩下 ((1+1)*2 +1)*2 个桃子
不难得出规律
而我们分析时 是从 n开始一天天减去 最后得出第n天 所以 当使用 for循环时 不妨用 n-- 的方式
AC 代码
#include<stdio.h>
#include<math.h>
int main()
{
long long int a,N,c,i;//a,表示摘的桃子数量
scanf("%lld",&N);
for(i=1,a=1;N>1;N--)
{
a = (a + 1)*2;
}
printf ("%lld",a);
return 0;
}