「猴子分桃java」猴分桃问题

博主:adminadmin 2022-12-17 06:33:06 90

今天给各位分享猴子分桃java的知识,其中也会对猴分桃问题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

猴子分桃问题,用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

猴子分桃(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,递归,写猴子分桃问题

//楼上几位的有逻辑问题

public

class

Dg

{

static

int

ts=0;//桃子总数

int

fs=1;//记录分的次数

static

int

hs=5;//猴子数...

int

tsscope=5000;//桃子数的取值范围,范转太大容易溢出.

public

int

fT(int

t){

if(t==tsscope){

//当桃子数到了最大的取值范围时取消递补归

System.out.println("结束");

return

0;

}

else{

if((t-1)%hs==0

fs=hs){

if(fs==hs)

{

System.out.println("桃子数

=

"+ts

+"

时满足分桃条件");

}

fs+=1;

return

fT((t-1)/5*4);//

返回猴子拿走一份后的剩下的总数

}

else

{

//没满足条件

fs=1;//分的次数重置为1

return

fT(ts+=1);//桃子数加+1

}

}

}

public

static

void

main(String[]

args)

{

new

Dg().fT(0);

}

}

猴子分桃java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于猴分桃问题、猴子分桃java的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-17,除非注明,否则均为首码项目网原创文章,转载请注明出处。