A,B,C,D,E五个渔夫夜间合伙捕鱼,凌晨都疲惫不堪,各自在草丛中熟睡。第二天清晨A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,C,D,E也按同样方法分鱼。问5人至少捕到多少条鱼?
- /**
- * 渔夫分鱼
- *
- * @param n
- * 人数
- * @return
- * 原始总鱼数
- */
- static int devideFish(int n) {
- for (int i = 0; i < Integer.MAX_VALUE; i++) {
- int sum = i;
- for (int j = 0; j < n; j++) {
- if (sum % n == 1)
- sum = (sum / n) * 4;
- else
- sum = 0;
- }
- if (sum != 0)
- return i;
- }
- return -1;
- }
引用CSDN网友de思想:
n mod 5=1
第一个拿走自己的一堆后同样除5余1,
即4k mod 5=1,
所以 k mod 5 =4
同理,第二个、第三个……都是4堆余1,自然一堆余4
这正是“除基数取余”的方法,所以答案就是5进制的 44441
(44441)5=3121D