HJF:
首先对于一个x位的数,我们来观察先擦掉它偶数位置的数字,再擦掉余下的数字中的奇数位置的数字后剩下的数字在原数中是哪些位上的?显然剩下的数字在原数中的位置依次为3,7,11,…,这样的位置共有(x+1)/4个(“/’’在本文中均表示整除运算)。
我们将剩下的数字的位置还按照1,2,3,…进行编号,然后继续进行下一周期的操作,则得到一个与原问题本质一致的子问题,其规模为(x+1)/4。设原问题的解为F(x),则子问题的解为F((x+1)/4)。根据上述的位置编号转换关系可得递归式F(x)=4 F((x+1)/4)-1,边界条件为F(1)=1,F(2)=1。
有了上述的递归式,我们就能在1 og4(x)的时间内求出一个总长为x位的数最终剩下
的是哪个位置的数。对于输入数据n,只要算出它对应的数n1共有多少位,这一点相信大
家都会推算,然后用递归式算出n1最终剩下的数所在的位置,再用二分法找到这个位置
上的数即可。