猴子摘桃
2016-08-31 17:05:25
问题描述:
一只猴子摘桃子,摘累了,决定休息一下再分桃子。过了一会,来了一只猴子,把所有桃子均分成了5份,结果多了1个,就把多出的吃了,然后拿走了其中的一份;过了一会,又来了一只猴子,它并不知道前面已经有猴子来过了,也把所有桃子均分成了5分,结果多了1个,就把多出的吃了,然后拿走了其中的一份;后面的第3、4、5只猴子也是同样的道理,分5份,吃一个,拿走一份。问这堆桃子最初总共至少有几个?最后又会剩几个?
问题解析:
第一只:5A1 + 1;
第二只:5A2 + 1 = 4A1;
第三只:5A3 + 1 = 4A2;
第四只:5A4 + 1 = 4A3;
第五只:5A5 + 1 = 4A4;
最后剩余桃子数量:4A5。
解法分析:
如果直接计算A1——A5,势必使计算非常复杂。
A5 = (4A4 - 1) / 5
= (4(4A3 - 1) / 5-1) / 5 = (16A3-9) / 25
= (16(4A2 - 1) / 5-9)/25 = (64A2-61) / 125
= (64(4A1 - 1) / 5-61) / 125 = (256A1-369) / 625
>= 1;
1 var m = 0; 2 var arr_k = new Array(); 3 for (var k = 1; k < 10000; k++) 4 { 5 if ((5*k+1) % 4 == 0 && (25*k+9) % 16 == 0 && (125*k+61) % 64 == 0 && (625*k+369) % 256 == 0) 6 { 7 arr_k[arr_k.length] = k; 8 m++; 9 } 10 }
仔细观察,可以发现如下关系:
5(A2 + 1) = 4(A1 + 1);
5(A3 + 1) = 4(A2 + 1);
5(A4 + 1) = 4(A3 + 1);
5(A5 + 1) = 4(A4 + 1);
=> A5 + 1 = 4(A4 + 1)/5 = ... = 44(A1 + 1)/54
=> A1最小为54 - 1 = 624,此时A5 = 255
=> 桃子最初至少有3121个,最后剩1020个。
1 var m = 0; 2 var arr_k = new Array(); 3 arr_k[arr_k.length] = Math.pow(4, 4) - 1; 4 m++;
结果相关:
等比数列:又称几何数列。是一种特殊数列。它的特点是:从第2项起,每一项与前一项的比都是一个常数。
浙公网安备 33010602011771号