关于渔夫捕鱼有关问题
关于渔夫捕鱼问题说是5个渔夫去捕鱼,然后睡了一觉,第一个人醒来后把捕到的鱼分成5份并丢掉多余了一条鱼,然
关于渔夫捕鱼问题
说是5个渔夫去捕鱼,然后睡了一觉,第一个人醒来后把捕到的鱼分成5份并丢掉多余了一条鱼,然后他把自己的那份拿走,第二个醒来也是把剩下的分成5份丢掉多余的一条,然后拿走自己的一份,剩下的3个也同样做,问这5个人最少捕了多少条鱼?
好像流传的一个答案是3906,但是我算到3121也可以,大家有什么看法呢
[解决办法]
(3121 - 1)/5 = 624
624 -1 = 623不能被5整除啊
[解决办法]
[解决办法]难道是我理解错了,第二个人醒来不是将第一个人拿走1份之后剩下的4份,分成5份还多余1条?
[解决办法]C/C++ code#include <stdio.h>int main(){ int m=1,n,i; while(1) { n=m; for(i=0;i<5;i++) { if((n-1)%5!=0) break; else n=(n-1)%5*4; } if(i==5) { printf("%d\n",m); break; } else m++; } return 0;}
[解决办法]
问题中有两个不完全的地方
1.丢掉的一条是否包含在下一次分配中?
2.最后一个人拿走的一份可否为0?
[解决办法]
应该是3121
[解决办法]
因为分了5次每次分5份,所以如果x是一个解,x+5^5即x+3125也是一个解
而x=-4是一个解,这个很容易想到。。如果原有-4条鱼,扔掉一条后剩-5条,分成5份每份-1条,自己拿走一份以后剩下-4条又回到了原来的情况,可以分下去
所以-4+3125=3121
[解决办法]
我赞成楼上的 我选3121
[解决办法]
[解决办法]
暴力求解,答案是:3121
[解决办法]
看法就是,3906那个答案是每次留下一份,而3121每次留下4份。
[解决办法]
还是你这个NB
[解决办法]
编个程序跑一下就知道了,很简单的。3121,6246,9371,……都能满足,但是最小的是3121.
[解决办法]
[解决办法]
如果按楼主写出来的题目意思应该是楼主搞错了,每次都是分五份,那应该是3906
如果逐个减少那应该是楼主的答案
[解决办法]
假设X是解,并且X+Y也是解,那么对X+Y进行一次模拟操作,你就会发现,Y要乘以(4/5)^5,最后还要是整数,所以Y必然可以整除5^5。
就是不知道8L怎么构造到初始的-4这个解的。
[解决办法]
/**
* @param times 分出的次数 5
* @param peoples 人数(分出的份数)5
* @param remainder 剩余数 1
*/
public static int getMinNumber(int times,int peoples,int remainder){
int a = 1;
int minNumber = a * peoples+1;
int nextNumber = minNumber;
for(int i=times;i>=0;i--){
if(((nextNumber-1)*(peoples-1))%peoples==0){
nextNumber = (nextNumber-1)*(peoples-1)/peoples;
}else {
i = times;
++a;
nextNumber = minNumber = a * peoples+1;
}
}
return minNumber;
}
[解决办法]
难道是我理解错了,第二个人醒来不是将第一个人拿走1份之后剩下的4份,分成5份还多余1条?
[解决办法]