题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
思路:
设最后一个猴子拿了t0个桃子,
倒数第二个猴子拿了t1=(5*t0+1)/4个桃子,
倒数第三个猴子拿了t2=(5*t1+1)/4个桃子,
倒数第四个猴子拿了t3=(5*t2+1)/4个桃子,
第一个猴子拿了t4=(5*t3+1)/4个桃子,
则桃子总数 n=5*t4+1
注意:必须保证t0,t1,t2,t3,t4,n均为正整数,这也是解题的核心条件所在。
首先声明:我的代码比较笨拙,存在无数的改进地方,不喜勿喷
代码如下:
<span style="color:#330000;">public class Peach {
public int leastNumber() {
int total=6;
int t0,t1,t2,t3,t4;
for(;;total++){
if((total-1)%5==0 && (total-1)/5>=1){
t4=(total-1)/5;
if((t4*4-1)%5==0 && (t4*4-1)/5>=1){
t3=(t4*4-1)/5;
if((t3*4-1)%5==0 && (t3*4-1)/5>=1){
t2=(t3*4-1)/5;
if((t2*4-1)%5==0 && (t2*4-1)/5>=1){
t1=(t2*4-1)/5;
if((t1*4-1)%5==0 && (t1*4-1)/5>=1){
t0=(t1*4-1)/5;
if(t0>=1){
return total;
}
else{
continue;
}
}
else{
continue;
}
}
else{
continue;
}
}
else{
continue;
}
}
else{
continue;
}
}
else{
continue;
}
}
}
public static void main(String[] args) {
Peach peach=new Peach();
System.out.print(peach.leastNumber());
}
}
</span>
输出结果是:3121