题目描述
悟空第一天摘下桃子若干,当即吃掉一半,还不过瘾,又多吃一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?
输入:输入一个数n(1<=n<=30)。
输出:输出第一天的桃子个数。
样例输入 Copy
3
样例输出 Copy
10
分析
1.假设桃子总数为n
第一天吃的桃子总数 n/2+1 第一天剩余的桃子总数 n/2-1 第二天吃的桃子总数 (n/2-1)/2+1 第二天剩余的桃子总数 (n/2-1)/2-1 第三天吃的桃子总数 ((n/2-1)/2-1)/2+1 第三天剩余的桃子总数 ((n/2-1)/2-1)/2-1 第四天吃的桃子总数 (((n/2-1)/2-1)/21)/2+1 第四天剩余的桃子总数 (((n/2-1)/2-1)/2-1)/2-1
...... ...... ...... ...... 第n天吃的桃子总数 0 第n天剩的桃子总数 1 我们不难发现,每一天剩的桃子总数都是前一天剩的桃子总数除以2减1,所以我们可以利用循环往前倒推,循环的执行语句就为(x+1)*2,这样我们需要执行n-1次循环就可以得到第一天开始吃的时候桃子的总数了,OK,那我们直接上代码-------->>>>>>>>GoGoGo!!!
程序代码
#include<stdio.h>
int main(){
int n,x=1;
scanf("%d",&n);
for(int i=1;i<n;i++){//执行n-1次循环
x=(x+1)*2;//每次循环都是加一然后乘以2
}
printf("%d",x);
return 0;
}
运行结果
文案分享
愿你成为一朵野蛮生长的玫瑰花,愿你清醒,自洽,独立,盛开!