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