1樓:仙戈雅
先分析問題:用逆向思維來思考它,根據題意「 以後每天早上吃前天剩下的一半零一個 」,則我們可以用逆向思維來推導它,即從第十天往前推。已知第十天有一個,根據題意第九天應該就是(1+1)*2=4個,第八天應該就是(4+1)*2=10, 第七天應該就是(10+1)*2=22, 第六天應該就是(22+1)*2=46,
依此類推,直至第1天應該就是第2天(766+1)*=1534個桃子,即猴子第一天摘了1534個桃子。
為了驗證這個推導的正確性,你可以按正常邏輯來把它(即此時由前往後)推導,即由第一天1534個桃子,第二天就是1534/2-1=766個桃子,依此類推,直至第十天,那麼猴子此時就會發現只剩一個。
至此,我們由了推導的思想,再來編寫的**,就是小菜一碟的事情啦,實現的它方式無非就是那麼兩種,一種是簡單的for迴圈,另一種是遞迴。這裡我採用遞迴,因為解決此類問題往往用遞迴來思考它,會讓問題變得更簡單。按照數學思維來說 就是求未知數,則可以根據已知數出發進行求解(那麼這裡的已知數已經告訴了我們,它說第十天只有一個桃子)。
下面是我的遞迴演算法來求解它的方法:
#include
using namespace std;
int recurrent_monkey(int days) //猴子吃桃遞迴
int main()
{int days=1;
cout<
2樓:匿名使用者
unsigned int peach_counter; //桃子總數
unsigned int data[10]; //10天每天吃的桃子數量
unsigned int i;
data[0]=1;
for(i=1;i<10;i++)}
3樓:
第一天摘了1534個
程式設計,猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第2天早上將
4樓:z博我所愛
int day, x1, x2;
day = 9;
x2 = 1;
while (day > 0)
", x1);
console.readkey();
1、猴子吃桃問題。猴子第一天摘下若干桃子,當即吃了一半,還不過癮,又多吃了一個。第二
5樓:巨蟹
^設猴子第一天公摘了抄x個桃子。
則第一天吃了後,剩下的
桃子=(x/2)-1 = (x/(2^1)) - ((2^1)-1)/(2^(1-1))
第二天吃了後,剩下的桃子數=((x/2)-1)/2) -1 =(x/4) - (1/2) - 1 =(x/(2^2)) - ((2^2)-1)/(2^(2-1));
所以,第n(n<9) 天吃了後,剩下的桃子數= (x/(2^n)) - ((2^n)-1)/(2^(n-1))
第10天早上發現只有一個了,即第九天吃了後,剩下的桃子只有一個了。即:
(x/(2^9) - ((2^9)-1)/(2^(9-1))=1,
x=(2^9)+2*(2^9-1)=(2^9)+(2^10)-2 =512+1024-2=1534;
6樓:小婷子
答案是第一天一共來摘自了: 按照倒推的方法 第十天1顆桃 第九天4顆桃 第八天10顆桃 第七天22個桃 第六天46個桃 第五天94個桃 第四天190個桃 第三天382個桃 第二天766個桃 第一天1534個桃 希望採納、、、
7樓:匿名使用者
/*猴子吃桃問題*/
#include
main()
printf("第一天共
zhi摘了%d個桃子\n",sum);
}/*具體思路dao如下專:
第10天剩餘屬
桃數:1
第9天剩餘桃數:(1+1)*2=4
第8天剩餘桃數:(4+1)*2=10
第7天剩餘桃數:(10+1)*2=22
第6天剩餘桃數:(22+1)*2=46
第5天剩餘桃數:(46+1)*2=94
第4天剩餘桃數:(94+1)*2=190
第3天剩餘桃數:(190+1)*2=382第2天剩餘桃數:(382+1)*2=766第1天剩餘桃數:
(766+1)*2=1534。。。規律很明顯,即每天剩餘的桃數是第二天桃數加1的兩倍。*/
8樓:南霸天
#include
void main()
printf("total=%d\n",x1);}
9樓:會呼吸的痛
樓上的,應該是while(day>1)
猴子吃桃問題。猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。
10樓:匿名使用者
這個程式要用逆推的方法,一個迴圈就夠了內:
#include
#include
main()
11樓:聽不清啊
#include
void main()
while(day<10);
if(a==1)
printf("t=%d\n",t);}}其實,上面的程式不夠嚴密:如a是一個奇數,程式照樣可以執行;但是卻與題目所述不符。所以最好改為如下(執行結果相同):
#include
void main()
while(day<10);
if(a==1&&day==10)
printf("t=%d\n",t);
else a=0;}}
用c語言解決猴子吃桃問題(使用指標)猴子第一天摘了若干個桃子,當即吃了一半,還不過癮又多吃了一個。 30
關於猴子吃桃問題猴子第一天摘下若干個桃子,當即吃了一半,還不過癮有多吃了一個,第二天早上又將剩下的
12樓:匿名使用者
不要在迴圈內部bai改變i的值
du,這樣的迴圈最好用while再內部zhi判斷是dao否符合條件使用break打斷退出迴圈版
天數 n
int i=0, x=0;
while(1)
i<<2;
}方法權是這樣,自己再仔細算算
迴圈裡具體該如何算
13樓:匿名使用者
python可以bai這樣做
i=1s=1
for i in range(10):
i=s+1+1
s=s+i
print(s)
猴子第一天摘下若du幹個桃子,當即吃了
zhi一半,好不過癮,又多dao吃了一個。專第二天早屬上又吃了剩下的桃子的一半,又多吃了一個。以後每天都吃了前一天剩下的一半零一個,到第 10 天早上想再吃的時候,就剩下一個桃子。
求第一天共摘多少個桃子
14樓:匿名使用者
# include
int main(void)
printf("總桃內子數為:
容%d\n", n);
return 0;}
15樓:飛之馬
用遞迴法:程式如下:
#include "stdio.h"
int qitao(int n);/*在主函式之前作調數函式說明*/void main()
int qitao(int n)/*自定義函式qitao(int n)以計算n天前的桃子數目*/
別外根據你實在的要求是想人家幫你修改你的程式,你的演算法其實也是可以算出來的,你是假設了一個很大的數域裡面存在著一個數,它經過10天后,就是1,不過你寫的程式不對,應修改如下:
#include
void main()
if(j==1)//判斷最後一天的桃子數是否為一個。
goto aa;}}
aa:printf("%d",i);}
16樓:
可以這樣的:回答
#inclide
void main()
printf("%d",x1);}
17樓:手機使用者
#include
int digui(int n);
void main()
int digui(int n)
else
return p;}
18樓:chen陳逸帆
begin
writeln('1534');
end.
c語言程式設計:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多
19樓:匿名使用者
#include
int main(void)
printf("the monkey got %ld peachs in first day.\n",x);}
C語言程式設計求第一天共摘多少個桃子
程式21 題目 猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下 的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。1.程式分析 採取逆向思維的方法,從後往前推斷。2....
我家新買的小狗泰迪剛到我家兩天,第一天吃東西了,今天說什麼也
菲爾愛莎 狗狗拉稀或者吐 的話,不要給狗狗吃的了,停食,讓狗狗把腸胃裡的內東西清空的 水願意容喝的話可以給,但是少給,不要給太多 一點水都不喝的話也不行,會造成脫水,脫水的話去藥店買葡萄糖粉,兌水給狗狗喝,注意好葡萄糖粉的量,別加太多。吃多了或者吃壞了肚子拉稀的話,吃寵物專用的益生菌 普通的拉稀腸胃...
媽媽買來一些蘋果,第一天吃了一半,第二天又吃了剩下的一半,最後還剩,媽媽一共買了幾個蘋果?一年
第二天還剩 2 2 4個 最開始有 第一天 4 4 8個 答 媽媽一共買了8個蘋果。 2x2x2 8個 從最後剩2個倒推 桃花煙光 2 2 1 4 1 8 杜雅豔 用2 2 4 個 再用4 4 8 個 剩下的2減去一半得1,1是第二天的,第一天是第二的雙倍。是第一天2十第二天1十剩下的2 5個媽媽一...