题目如下:
ABCDE五人打渔,打完睡觉,A先醒来,扔掉1条鱼,把剩下的分成5分,拿一份走了;B再醒来,也扔掉1条,把剩下的分成5份,拿一份走了;然后CDE都按上面的方法取鱼。问他们一共打了多少条鱼. 答案有多个。
解题过程:
总鱼数x条:
剩余 = 鱼数 - (鱼数-1)/剩下未拿鱼的人数
y = 4(x-1)/5 y=2496
z = 4(y-1)/5 z = 1996
m = 4(z-1)/5 m= 1596
n = 4(m-1)/5 n= 1276
p = 4(n-1)/5 p= 1020
p:最后剩余鱼数量
x:总共的鱼数量
上面是5个人分别拿走鱼之后,剩余的鱼数量。
可以通过多元多次方程式 简化如下:
p= (4n+1)/5 => (5p+4)/4 = n
(5p+4)/4 =4(m-1)/5 => 25p+20 = 16m-16 => (25p+36)/16 = m
(25p+36)/16 = 4(z-1)/5 => 125p+180 =64z-64 => (125p+244)/64 = z
(125p+244)/64 = 4(y-1)/5 => 625p+1220 = 256y-256 => (625p+1476)/256 = y
(625p+1476)/256 = 4(x-1)/5
最后可以通过,这个公式计算出来很多结果,但由于每次取的鱼数量必须是整数,
所以公式计算出来的结果中,还是有错误的。
//推到出来公式 (625p+1476)/256 = 4(x-1)/5 p:最后剩余的鱼数量 x:总共的鱼数量
//假设鱼在10000条以内
for(int i = 5 ;i<=10000 ;i++){
if( ((256*4*(i-1))/5-1476)%625 == 0 ){
int p = ((256*4*(i-1))/5-1476)/625;
System.out.println("X:"+i+",P:"+p);
}
}
最后,通过程序循环,调用每一个公式,获取正确结果,答案如下:
/*记录5人取鱼的数量*/
int []res= new int[5];
int count = 1;
/*假设鱼数量在10000以内*/
for(int i = 5;i<=10000;i++){
int temp_var = 0;
for(int j =0;j<5; j++){
if(j == 0){
if( (i-1)*4%5 == 0 ){
temp_var = (i-1)*4/5;
res[j] = i - 1 - temp_var;
}else{
break;
}
}else{
if( (temp_var-1)*4%5 == 0 ){
int temp_var1 = (temp_var-1)*4/5;
res[j] = temp_var - 1 - temp_var1;
temp_var = temp_var1;
}else{
break;
}
}
if(j == 4){
System.out.println("************答案"+(count++)+"************");
System.out.println("共钓到鱼的总数:"+i+",剩余鱼的总数:"+temp_var);
for(int p = 0; p<5 ;p++){
System.out.println("第"+(p+1)+"个人,拿走了"+res[p]+"条鱼");
}
}
}
}
************答案1************
共钓到鱼的总数:3121,剩余鱼的总数:1020
第1个人,拿走了624条鱼
第2个人,拿走了499条鱼
第3个人,拿走了399条鱼
第4个人,拿走了319条鱼
第5个人,拿走了255条鱼
************答案2************
共钓到鱼的总数:6246,剩余鱼的总数:2044
第1个人,拿走了1249条鱼
第2个人,拿走了999条鱼
第3个人,拿走了799条鱼
第4个人,拿走了639条鱼
第5个人,拿走了511条鱼
************答案3************
共钓到鱼的总数:9371,剩余鱼的总数:3068
第1个人,拿走了1874条鱼
第2个人,拿走了1499条鱼
第3个人,拿走了1199条鱼
第4个人,拿走了959条鱼
第5个人,拿走了767条鱼
共钓到鱼的总数:3121,剩余鱼的总数:1020
第1个人,拿走了624条鱼
第2个人,拿走了499条鱼
第3个人,拿走了399条鱼
第4个人,拿走了319条鱼
第5个人,拿走了255条鱼
************答案2************
共钓到鱼的总数:6246,剩余鱼的总数:2044
第1个人,拿走了1249条鱼
第2个人,拿走了999条鱼
第3个人,拿走了799条鱼
第4个人,拿走了639条鱼
第5个人,拿走了511条鱼
************答案3************
共钓到鱼的总数:9371,剩余鱼的总数:3068
第1个人,拿走了1874条鱼
第2个人,拿走了1499条鱼
第3个人,拿走了1199条鱼
第4个人,拿走了959条鱼
第5个人,拿走了767条鱼