2 回答
TA贡献1829条经验 获得超7个赞
/**
* 设第一个人分鱼时总数为a1,每人人分的k1,有:t1 = 5*k1+1.剩下的鱼为t2 = t1-k1-1;
* 同理,第二个人鱼时有 t2 = 5*k2+1;
* 结合以上,得出k1 = (5*k2+1)/4,同时要满足k1,k2为整数.
* 假设最后每人平分数为k5=t,递归的到k1,就可求出总数
*/
public static void main(String... args) {
int k = 1;
int t = k;
int i = 0;
while (i < 5){
if((t*5+1) % 4 == 0){
t = (t*5+1)/4;
}else {
t = ++k;
i = 0;
}
i++;
}
System.out.println(5*t+1);
}
TA贡献2016条经验 获得超9个赞
你算的等于3906是按照 y=(x-1)/5
这种方式迭代的吧?题目里面是每个人只是拿走了一份,并不是只留了一份。
考虑每个人分完都拿走了一份,剩下4份,公式应该是 y=4(x-1)/5
暴力代码如下:
function fish() {
for(var j = 0; j < 10000; j++) {
if(canSplit(j)) {
console.log(j);
}
}
}
function canSplit(count) {
for(var i = 0; i < 5;i++) {
if((count - 1) % 5 === 0) {
count = (count - 1) * 4 / 5;
} else {
return false;
}
}
return true;
}
fish();
10000以内的三个结果是:
3121
6246
9371
添加回答
举报