题目:
5个水手带着一只猴子来到一座荒岛,见岛上有大量椰子,他们便把这些椰子平均分成五堆,多余的一只给猴子吃了,夜深人静,一个水手偷偷起来拿走了一堆椰子,把剩下的椰子又平均分成五堆,结果多出一只椰子,就顺手丢给猴子吃了,过了一会儿,另一个水手也偷偷起来了,拿走了一堆椰子后,再把剩下的椰子平均分成五堆,结果还多了一只,又丢给猴子吃了。就这样,5个水手依次偷偷爬起来藏起一堆椰子后又重新分了椰子,每次都多出一只,都让猴子占了便宜,第二天一早,岛上依然平均堆放着5堆椰子,试问:原先的椰子最少要有多少只?
本人编写的代码:
public class monkey {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int t;
int a[]=new int[6];
int b[]=new int[6];
boolean k=true;
for(t=1;k;t++){
a[0]=t;b[0]=5*a[0]+1;
if(b[0]%4!=0)
continue;
else{
a[1]=b[0]/4;b[1]=5*a[1]+1;
if(b[1]%4!=0)
continue;
else{
a[2]=b[1]/4;b[2]=5*a[2]+1;
if(b[2]%4!=0)
continue;
else{
a[3]=b[2]/4;b[3]=5*a[3]+1;
if(b[3]%4!=0)
continue;
else{
a[4]=b[3]/4;b[4]=5*a[4]+1;
if(b[4]%4!=0)
continue;
else{
a[5]=b[4]/4*5+1;k=false;
}
}
}
}
}
}
System.out.println(a[5]);
}
}
虽然结果是对的,但感觉还是比较复杂,有没有适用于普遍规律(例如是N个人的时候)的算法啊?赐教哦。