不知道你注意了没有,如果比赛人数正好是2的幂,那么轮空次数就是0,也就是说,如果比赛人数是2,4,8,16,32等等,就不会出现轮空,如果不是这样类型的数,则至少要有一次轮空.假设有n个队员参赛,如果是奇数,那么第一轮就有一名队员要轮空,从第二轮开始的轮空数与(n+1)/2个队员参赛的轮空数是一样的,所以这时总的轮空数是:(用L(n)表示n个队员参赛的轮空数)
L(n)=1+L((n+1)/2)
如果n是偶数,那么,第一轮没有轮空,从第二轮开始的轮空数与n/2个队员参赛的轮空数是一样的,所以有:
L(n)=L((n)/2)
我们可以统一处理以上两个公式:
L(n)=a0+L((n+a0)/2)
其中a0为1或为0取决于n的奇偶性,下面的a1,a2,a3...也一样,假定2k
L(n)=a0+a1+L(a0/4+a1/2+n/4)
=a0+a1+a2+L(a0/8+a1/4+a2/2+n/8)
=a0+a1+a2+...+ak-1+L(a0/2k+a2/2k-1+...+ak-1/2+n/2k)
k-1 k-1
= ∑as+L(1/2k∑as2s+n/2k)
s=0 s=0
由于最后总有:
k-1
1/2k∑as2s+n/2k=2
s=0
即:
k-1
∑as2s=2k+1-n
s=0
我们看到,L(n)=a0+a1+a2+...+ak-1
所以,只要将2k+1-n化成二进制表示,其系数和就是轮空数,也就是其中1的个数.对于n=37,我们可以算出2k+1-n=64-37=27=11011,其中有4个1,所以共有四次轮空.