小猴編程例題
Ⅰ 編程,猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個。第2天早上將
int day, x1, x2;
day = 9;
x2 = 1;
while (day > 0)
{
x1 = (x2 + 1) * 2; /*第一天的桃子是第二天桃子數加1後的2倍*/
x2 = x1;
day--; /*因為從後向前推所以天數遞減*/
Console.WriteLine("the total is {0}", x1);
Console.ReadKey();
Ⅱ c/c++/java編程題:聰明的猴子,高分急求大神解答!題目描述如圖
能否把樣例輸出給出,方便驗證演算法的正確性
下面交流下我的思路
首先我們吧問題轉化,變成你一開始有一個原始數字0,你每次可以從數列a中取出一個給他加上或者減去,求可以到達的最小正整數,如果這個數字等於1,那麼就說明a這個序列符合要求
然後我們發現這個加加減減的過程很類似 輾轉相除法 ,那麼顯然對於一個數列a 如果其中有兩個數字互質,那這個數列就一定符合要求,同樣的,如果沒有兩個數字是互質的,那麼這個數列就一定不符合要求。
由於 gcd(1,x)=1 所以也就是說a是符合要求的,當且僅當a中所有元素的gcd=1
這樣問題就變成了要求一個序列 a ,要求a中的元素都小於等於B,a 中的最後一個元素為B,且a中所有元素的gcd=1,而這個問題顯然可以使用莫比烏斯反演解決
復雜度O(B),對於題目給出的數據范圍顯然可以勝任。
Ⅲ vb中如何編程這個題 猴子吃桃(一天吃掉一半多一個,第二天吃掉盛下的
Private Sub Command1_Click()
s = 1
For i = 7 To 1 Step -1
s = 2 * s + 1
Next i
Print "桃子的數量="; s
End Sub
Ⅳ 編程求解 猴子吃桃問題。 第一天摘下桃子若干,當即吃掉一半,又多吃一個 第2天將剩餘部分吃掉一半還
512個,因為是一半關系所以可以逆著在原數1加兩倍因為後面的1是前面的一半,那後面的就是1的兩倍,以此類推就是1、2、4、8、16、32、64、128、256、512。所以最後答案是512
Ⅳ c語言程序猴子偷桃問題
#include<stdio.h>
int main()
{
int i,n=1;
for(i=9;i>0;i--)
n=(n+1)*2;
printf("the number of all peach is %d ",n);
return 0;
}