请帮我设计算法 用编程语言输出

来源:百度知道 编辑:UC知道 时间:2024/06/24 04:50:20
一天,小猴子从树上摘下若干个桃子,当即吃了一半,觉得不过瘾,又吃了一个。第二天小猴子接着吃剩下的一半,还觉得不过瘾,又吃了一个。以后每天都是吃剩下的一半,就再多吃了一个。到第四天,只剩下一个桃子。试设计一个算法流程图,求小猴子第一天摘下多少个桃子。

设第一天摘下x个桃子。根据题意思得:
第一天剩下:x-(x/2+1)=(x-2)/2
第二天剩下:(x-2)/2-((x-2)/4+1)=(x-6)/4
第三天剩下:(x-6)/4-((x-6)/8+1)=(x-14)/8
第四天剩下:(x-14)/8-((x-14)/16+1)=(x-30)/16
从而得到方程(x-30)/16=1
解方程得到x=46
分析到这里,可以直接输出46即可。
但是题目中是已知第四天剩一个桃子,如果改成第n天,再求第一天摘下多少桃子?

表达式的规律(x-(前一天这个位置的数字+2(n-1)))/2n=1;
计算机的表达市为1*2n+(前一天这个位置的数字+2(n-1))
这样就可以推出N天前第一天摘下多少桃子?
static void Main(string[] args)
{
peach(10);
}
public static int peach(int n)
{
int a = 2;
int b = 1;
int sq = 1;

int c=0;//第一天摘的个数
for (int i = 1; i <= n; i++)
{
sq = sq * 2;
b = b * 2;
if (sq == 2)
{
continue;
}
a += sq;

c = 1 * b + a;
if (i == 1)
{
Console.WriteLine("猴子第一天摘了4,一共吃了1");
}
else if(i==n)
{
Console.WriteLine("猴子第一