首页 > 试题广场 >

A,B,C,D,E 五个人捕鱼后已凌晨,大家便睡觉。早上 A

[问答题]
A,B,C,D,E 五个人捕鱼后已凌晨,大家便睡觉。早上 A 第一个醒来,将鱼均分成五份,把多余的一条鱼扔掉,拿走自己的一份, B 第二个醒来,也将鱼均分为五份,把多余的一条鱼扔掉,拿走自己的一份。 CDE 依次醒来,也按同样的方法拿鱼,问他们合伙至少捕了几条鱼。
楼上的理解有误,下文中提到的当前鱼均指A、B、C、D、E在没有分鱼和丢鱼之前看到的鱼
首先将鱼均分成五份,把多余的一条鱼扔掉,拿走自己的一份,我们可以得到以下两点:
  1. 当前鱼的个数减去1是5的倍数
  2. 同时当前鱼的个数是4的倍数,因为当前鱼是由上一个人均分5份且拿走1份剩下的那4份
其实上面的信息也可以换个说法:
  1. 当前鱼的个数减去1(把多余的一条鱼扔掉)再乘以0.8(拿走自己的一份)就是下一个人看到的鱼的数量
  2. 同理我们可以得到:当前鱼的个数乘以1.25再加上1就是逆推得到的上一个人看到的鱼的数量
public class Test {
	public static void main(String[] args) {
		double result = 0;
		for (int i = 1; i < 1000000; i++) {
			result = find(i);
			if (result > 0) {
				break;
			}
		}
		for (char i = 'A'; i < 'F'; i++) {
			System.out.println(i+" "+result);
			result = (result - 1)*0.8;
		}
	}
	public static double find(double a){
		for (int i = 0; i < 4; i++) {
			if ((a-1) % 5 == 0 && a % 4 == 0) {
				a = a*1.25 + 1;
			}else {
				return 0;
			}
		}
		return a;
	}
}
其打印出来的结果如下:
A 3121.0
B 2496.0
C 1996.0
D 1596.0
E 1276.0
所以一共捕了3121条鱼

编辑于 2017-03-10 20:11:11 回复(0)
按照题目要求,E起来的时候最少是6条鱼,这样才能分成五份丢掉一条,那么往上推到,D起来是31条,C是156条,B是781条,A是3906条,所以最少是3906条鱼

发表于 2017-03-10 15:16:19 回复(0)