java猴子分桃問題
『壹』 猴子分桃問題
設這堆桃子至少有x個,借給它們4個,成為x+4個。5個猴子分別拿了a,b,c,d,e個桃子(其中包括吃掉的一個桃子),則可得
a=(x+4)/5,b=4(x+4)/25,c=16(x+4)/125,d=64(x+4)/625,e=256(x+4)/3125
e應為整數,而256不能被5整除,所以(x+4)應該是3125的倍數,所以(x+4)=3125k(k為自然數)。當k =1時,x=3121
所以,5個猴子至少摘了3121個桃子
(3121-1)/5*4=2496(個) (2496-1)/5*4=1996(個) (1996-1)/5*4=1596(個)
(1596-1)/5*4=1276(個) (1276-1)/5*4=1020(個)
所以最後剩下1020個
成功!!!!!!!!!!!!!!!!!!
加油!!!!!!!!!!!!!!!!!!
『貳』 java華為面試題 求海灘上桃子有多少
你題目也不完整,下面是我幫你網路到的,估計和你說的一樣!希望對你有所幫助!
/**
需求:題目:海灘上有一堆桃子,五隻猴子來分。
第一隻猴子把這堆桃子平均分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。
第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,
第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?
*/
publicclass猴子分桃
{
publicstaticvoidmain(String[]args)
{
intsum=Sum();
System.out.println(sum);
}
privatestaticintSum()
{
intj=0;
intm=0;
for(inti=4;i<10000;i+=4)
{
m=i;
intcount=0;
for(intk=0;k<5;k++)
{
j=i/4*5+1;
i=j;
if(j%4==0)
{
count++;
}else
{
break;
}
}
i=m;
if(count==4)
{
break;
}
}
returnj;
}
}
『叄』 java 設計分桃問題
public static void main(String[] args) {
Test t=new Test();
int num=t.calculateOriginalPeachAmount(0.5, -1, 3, 10);
System.out.println(num);
}
public int calculateOriginalPeachAmount(
double percent,// 吃掉的占總數的百分比, 值區間 0.0 ~ 1.0, 如 0.5 表示吃掉一半
int stolen, // 每次被偷的個數, 合理的值應>=0,但如果允許還回來則應該允許為負值,看自己的想法
int lastDay, // 發現最後剩餘桃子個數的天數,注意最後一天並沒有讓猴子吃桃
int remain // 發現最後剩餘桃子的個數
){
int num=remain;
for (int i = 1; i < lastDay; i++) {
num=(int)((num+stolen)/(1-percent));
if(num<=0){
return -1;//返回-1說明傳入的參數有問題。
}
}
return num;
}
還桃子是可以的,但是不是所有的數據都可以。 所以要有計算判斷。
『肆』 猴子分桃(java問題)
public
static
void
main(String[]
args)
{
int
sum2;
//用來進行邏輯運算的桃子總數
int
sum1
=
6;
//實際的桃子總數
int
count;
//分桃子次數(控制內層循環)
int
index;
//分桃子次數(符合分桃方案的次數)
boolean
flag
=
true;
//控制外層循環
while(flag){
index
=
0;
//初始化分桃子的次數為0
count
=
0;
//初始化為第一個猴子開始分桃子
sum2
=
sum1;
//初始化邏輯運算的桃子總數為實際的桃子總數,因為此變數用於計算,所以值會改變,為了不影響實際的桃子總數,所以用此變數代替!
while(count
<
5){
//猴子開是分桃子了!
if(sum2%5
==
1){
//如果桃子總數除以5餘1說明此桃子總數符合分桃方案(sum2%5
==
1)
sum2
-=
1;
//因為桃子被猴子扔掉一個,所以要減1
sum2
-=
sum2/5;
//又因為桃子被平均分為了5份並且被猴子拿走了1份,所以要減1/5
index++;
//如果符合分桃方案就將計數器加1
}
if(index
==
5){
//如果計數器等於5,也就是桃子的總數在符合分桃方案(sum2%5
==
1)的前提下分可5次的話!說明此桃子總數是符合條件的最小整數!
System.out.println("最少有
"
+
sum1
+
"
個桃子!");
flag
=
false;//關閉外層循環;
break;
//跳出內層循環;
}
count++;
//5個猴子分桃子嘛!第一個分完了,當然該輪到第二個了!!所以要遞增!
}
sum1
+=
5;
//桃子的總數只有每次遞增5才可以符合分桃方案(sum2%5
==
1)!
}
}
不好意思啊,由於剛才比較趕時間,沒好好寫!
這回你再看看!!
如果還有哪裡不清楚的話就問我好了!!
『伍』 猴子分桃問題,用Java代碼實現
設這一堆桃子至少有x個,先借給它們4個,5個猴子分別拿 了 a、b、c、d 、e個桃子(其中包括吃掉的一個),則可得:
a=1/5*(x+4)
b=1/5*4/5*(x+4)=4/5^2*(x+4)
....
e= 4^4/5^5*(x+4)
e應為整數,而4的4次方不能被5的5次方整除,只有(x+4)應是5的5次方的倍數,所以
(x+4)=3125k(k取自然數)
當k=1時,x=3121
這樣得出一個算式,設有n個猴子,即n-1的n-1次方除以n的n次方=x+n-1
以n為傳入的參數,x為返回值
x=n的n次方-n-1