java 一道笔试题目

刘振锋 2008-09-29 03:18:28
一道笔试题目:
海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
...全文
551 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlttap 2008-10-05
  • 打赏
  • 举报
回复
很多书不都有嘛
hitzsf 2008-10-04
  • 打赏
  • 举报
回复
呵呵,现在看到了,
学习
弼碼溫 2008-10-04
  • 打赏
  • 举报
回复
3905
cxscpu 2008-10-04
  • 打赏
  • 举报
回复
[Quote=引用 40 楼 hitzsf 的回复:]
引用 38 楼 cxscpu 的回复:
我真的是服了,这么一个简单的题目居然有人写出了那么长的代码,可见大家都太笨了。我觉得只有26楼朋友的代码有点价值,其他的都是垃圾。



哈哈,还是你聪明!!!
3906,你试试怎么分???
[/Quote]

我在39楼已经给出正确算法了。
hitzsf 2008-10-04
  • 打赏
  • 举报
回复
[Quote=引用 38 楼 cxscpu 的回复:]
我真的是服了,这么一个简单的题目居然有人写出了那么长的代码,可见大家都太笨了。我觉得只有26楼朋友的代码有点价值,其他的都是垃圾。
[/Quote]


哈哈,还是你聪明!!!
3906,你试试怎么分???
cxscpu 2008-10-04
  • 打赏
  • 举报
回复
对不起了各位 ,37 ,38楼都是我发的帖子,我以为结果是 对的,不过我看错了题目,因为猴子只是拿走其中的一份,当然代码只要稍微改动一点点就行了
static int ok()
{
for(int i=0;;i++)
{
int temp=i;
for(int j=0;j<5;j++)
if((i-1)%5==0)
{
i=(i-1)/5*4;
if(j==4)
return temp;
}
i=temp;
}
}
哈哈哈,结果是3121,反正不管怎么说,我的代码是足够简单的,哈哈。
cxscpu 2008-10-04
  • 打赏
  • 举报
回复
我真的是服了,这么一个简单的题目居然有人写出了那么长的代码,可见大家都太笨了。我觉得只有26楼朋友的代码有点价值,其他的都是垃圾。
cxscpu 2008-10-04
  • 打赏
  • 举报
回复
我3分钟算出来了答案是3906,刚开始算成是781,当然如果按照数学的思维答案是对的,但是会导致第五个猴子的时候只有1个桃子,怎么分成5等份呢?每个猴子是0个,然后刚好剩下一个,但这个不太符合实际,所以我觉得3906是比较准确的结果
static int ok()
{
for(int i=1000;;i++)
{
int temp=i;
for(int j=0;j<5;j++)
if((i-1)%5==0)
{
i=(i-1)/5;
if(j==4)
return temp;
}
i=temp;
}
}
从1000开始就是为了避免出现781的结果,其实我觉得26楼的朋友的算法是最优化的,他假设第五个猴子的时候剩下6个桃子,这是最好的方法了,我的事枚举,有点耗时。
hitzsf 2008-10-04
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 Y000_Y 的回复:]
答案应该是3901
[/Quote]

(3901-1)/5=780
(780*4-1)/5=??????

虽然是java初学,但是这么明显的结果,中学生的水平也能看出来啊,不负责任的回帖
Isabel_y 2008-10-04
  • 打赏
  • 举报
回复
答案应该是3901
hitzsf 2008-10-04
  • 打赏
  • 举报
回复
最少的桃子数量3121,呵呵,忙了半小时,发现已经有人给出答案了
hitzsf 2008-10-04
  • 打赏
  • 举报
回复
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package peach;

/**
*
* @author Administrator
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
//第5只猴子拿到得桃子
int count=0;



for(int x=1;x<10000;x++){
boolean isInt=false;
count=5*x+1;//第5堆得桃子数量
for(int i=0;i<4;i++){
if (count%4==0) {
count=count*5/4+1;
isInt=true;
}else isInt=false;
}
if(isInt)
{System.out.print(count+"\t");
System.out.println(x);}
}

}

}
chendabian 2008-10-04
  • 打赏
  • 举报
回复
我没想出来

没有将猴子拿走的部分考虑在内
wNvShine 2008-10-04
  • 打赏
  • 举报
回复
mark...学习了
xiongwenhua365 2008-10-03
  • 打赏
  • 举报
回复
调试通过,想了好久啊,呵呵,

public class MonkeyPeach
{
public static int peachnum=6; //任意设置一个桃子的初始数量,用以递归。
public static int monkeynum=5; //猴子总数,可以任意设置猴子数量。
public static void main(String[] args)
{
peach(peachnum,monkeynum);
}
public static void peach(int num,int monkey)
{
if(monkey==0)
{
System.out.println("总桃子数为:"+num);
System.exit(0);
}
if(num%4!=0)
{
do
{
peachnum++;
}
while(peachnum%4!=0);
peach(peachnum,monkeynum);
}
peach(num/4*5+1,--monkey);
}
}
qinqinhao 2008-10-01
  • 打赏
  • 举报
回复
ding
ding
yeruping 2008-10-01
  • 打赏
  • 举报
回复

package fzu.test;
/**
* 一道笔试题目:
*海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,
*多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩
*下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿
*走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有
*多少个桃子?
* @author yeruping
*
*/
public class Peaker {
/*
* 以下方法理解错误,题目的意思是一只猴子拿走5份中的一份时,剩下4份由下一只猴子再分
* 而下面的方法是其中的一份再分!理解错误
*/

public void count(){
int sum =0;//一共有几多
int[] per = new int[5];//每只猴子分的桃子数
per[4] = 1;//要求最少的桃子数,既最后一只猴子分到1只桃子
for(int i=3;i>=0;i--){
per[i]=per[i+1]*5+1;
}
sum = per[0]*5+1;
System.out.println("每只分别至少分到:"+per[0]+" "+per[1]+" "+per[2]+" "+per[3]+" "+per[4]+"桃子 至少总共:"+sum);
}

public void countRight(){
/**
* 直接思路开始算,都符合条件后跳出循环
* 借用 vampireallen 的 呵呵
* 不过取消了小于4000同样可以进行的
*/
int sum = 0;
int[] per = new int[5]; //每只猴子分的桃子数
boolean flag = false;
for (int i = 0; ; i++) {//从0开始向上增长,到后面flag真时跳出!
sum = i;
int j = 0;
for (; j < 5; j++) {
if ((sum - 1) % 5 != 0) {
break;
}
sum = (sum - 1) * 4 / 5;
per[j]=sum;
if (j == 4) {
flag = true;
}
}
if (flag == true) {
System.out.println("每只分别至少分到:"+per[0]+" "+per[1]+" "+per[2]+" "+per[3]+" "+per[4]+"桃子 至少总共:"+i);
break;
}


借用 vampireallen 的
顺便解释我6楼那个错误;
dreamhyz 2008-10-01
  • 打赏
  • 举报
回复

package interview;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int count=1;
for(int i=1;i<6;i++){
count=count*5+1;
}
System.out.println(count);
}

}

count:3906
dreamhyz 2008-10-01
  • 打赏
  • 举报
回复
逆向思维
dreamhyz 2008-10-01
  • 打赏
  • 举报
回复
5的等比数列 0~5
加载更多回复(23)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧