java海滩上有一,Java猴子分桃问题--三种算法
海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子平均分為五分,多了一個,這只猴子把多的一個扔入海中,拿走了一份,第二只猴子把剩下的桃子又平均分成 五分,又多了一個,他同樣把多的一個扔入海中,拿走了一份,第三第四第五值猴子都是這樣做的,問海灘上原來最少有多少個桃子,第五只猴子得到多少桃子
/**
* 猴子分桃問題
*海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子平均分為五分,多了一個,
*這只猴子把多的一個扔入海中,拿走了一份,第二只猴子把剩下的桃子又平均分成 五分,
*又多了一個,他同樣把多的一個扔入海中,拿走了一份,第三第四第五值猴子都是這樣做的,
*問海灘上原來最少有多少個桃子,第五只猴子得到多少桃子
*/
public class MonkeyDividePeaches {
public static void main(String[] args) {
div1();
div2();
div3();
}
//第一種方法
public static void div1(){
int peaches=6;//桃子總數(shù)
while(true){
peaches+=5;//桃子每次加5個,保證能被5整除,提高執(zhí)行效率
int temp=peaches;//桃子數(shù)的計數(shù)器
int t=0;//滿足條件次數(shù)的計數(shù)器
for(int i=1;i<=5;i++){
if((temp-1)%5==0){
temp=(temp-1)*4/5;
t++;
}
else {
break;
}
}
if(t==5)//5次滿足條件,程序結(jié)束
break;
}
System.out.println(peaches);
}
//第二種方法
public static void div2() {
int n=1;//第五個猴的桃
int m=0;// 分之前的桃
int flag=1;
while(true){
flag=1;
m=5*n+1;
for(int i=5;i>=1;i--){
if(m%(5-1)==0){
m=m/(5-1)*5+1;
flag++; //計算多少次的桃子數(shù)量被4整除
}
else
break;
}
if(flag==5) //每次的桃子數(shù)量都能被4整除
break;
n++;
}
System.out.println("開始的桃子數(shù)至少是:"+m);
System.out.print("此時第五個猴子得到的桃子數(shù)是:"+n);
}
//第三種方法
public static void div3(){
int monkey=1;//要分桃的猴子數(shù)
int peaches=1;//桃的總數(shù)
int peach=1;//每次分桃的總數(shù)
//循環(huán)進行給每個猴子分桃
while(monkey<=5){
if(peach%5==1&&peach/5!=0){//如果成功分桃
peach=(peach/5)*4;//可分桃的總數(shù)為現(xiàn)在的4/5
monkey++;//換下一個猴子
}
else{//如果失敗,重新分桃這時可分桃數(shù)量加1
peaches++;
peach=peaches;
monkey=1;
}
}
System.out.println("桃的最小總數(shù)為:"+peaches);
}
//第四種方法
}
總結(jié)
以上是生活随笔為你收集整理的java海滩上有一,Java猴子分桃问题--三种算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs 2017 建立 php,程序在VS
- 下一篇: csrf保护php,防止PHP中的CSR