问题:
桌上有12个黑球和1个白球围成一个圆,按顺时针方向顺序数到13就拿走对应的一个球,
桌上有12个黑球和1个白球围成一个圆,按顺时针方向顺序数到13就拿走对应的一个球,
如果要求最后拿走的是白球,请问该从哪个球开始数数。
分析:
从最后一轮开始考虑,按轮次倒推。可以用递归法求解。
python代码:
N=13
# 把球看做从左到右的一行
print('White ball position from left:')
def find_ball(n):
if n == 1:
return 1
ret = N % n + find_ball(n-1)
if ret > n:
ret %= n
print('%2d round: %d'%(N - n + 1, ret))
return ret
find_ball(N)
输出:
White ball position from left:
12 round: 2
11 round: 3
10 round: 4
9 round: 2
8 round: 3
7 round: 2
6 round: 7
5 round: 2
4 round: 5
3 round: 7
2 round: 8
1 round: 8
开始的时候,白球位于第8个,也就是前面有7个黑球。