作者:乔山办公网日期:
返回目录:excel表格制作
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
这是个算法问题,网上搜索一下,有各种编程语言的解法,各种各样的思路,如果用Power Query来解答这个问题,其实可以借鉴这些思路。
穷举法是解决这类问题的基本方法,我们来分析一下这个问题:设桃子为x
规律:
- x-1能被5整除,
- 第一个猴子拿完后还剩下:m1=x-1-(x-1)/5
- 第二个猴子拿完后还剩下:m2=m1-1-(m1-1)/5
- 第二个猴子拿完后还剩下:m3=m2-1-(m2-1)/5
- 第二个猴子拿完后还剩下:m4=m3-1-(m3-1)/5
- 第二个猴子拿完后还剩下:m5=m4-1-(m4-1)/5
- m5是一个能被5整除的数
我们可以定义一个剩余桃子的函数:
let
xx= (x)=>x-(x-1)/5-1
in
xx
然后是定义一个函数y是这个函数5次嵌套:
这第二个函数就是为了,计算最终的剩余的桃子,当然结果必须是整数,这个是时候对应的x就是我们要的这堆桃子的总数。
做个100万行的查询,来穷举法解题:
那么判断为TRUE的就是我们的答案:
符合答案的最小值是3121,在100万个桃子中有320个数符合这个题的要求。
更多Power Query 学习资料请参考: