先作如下定义:
f[n]
表示在区间[1,n]
中从左向右间隔删除再从右向左间隔删除后所剩的编号
g[n]
表示在区间[1,n]
中从右向左间隔删除再从左向右间隔删除后所剩的编号
以 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , ⋯ n 1,2,3,4,5,6,7,8,\cdots n 1,2,3,4,5,6,7,8,⋯n为例,
第一次从左向右间隔删除后,所剩的编号的个数是
⌊
n
/
2
⌋
\lfloor n / 2\rfloor
⌊n/2⌋,所剩的编号f[n]
是
2
,
4
,
6
,
8
,
⋯
2
×
⌊
n
/
2
⌋
2,4,6,8,\cdots 2\times \lfloor n /2\rfloor
2,4,6,8,⋯2×⌊n/2⌋。对所剩的编号除以2,得到
1
,
2
,
3
,
4
,
⋯
,
⌊
n
/
2
⌋
1,2,3,4,\cdots,\lfloor n /2\rfloor
1,2,3,4,⋯,⌊n/2⌋。
再对 1 , 2 , 3 , 4 , ⋯ , ⌊ n / 2 ⌋ 1,2,3,4,\cdots,\lfloor n / 2\rfloor 1,2,3,4,⋯,⌊n/2⌋从右向左删除,得到 g [ ⌊ n / 2 ⌋ ] g[ \lfloor n/2 \rfloor ] g[⌊n/2⌋]。
g
[
⌊
n
/
2
⌋
]
g[ \lfloor n/2 \rfloor ]
g[⌊n/2⌋]和f[n]
有如下关系:
f
[
n
]
=
2
×
g
[
⌊
n
/
2
⌋
]
f[n] = 2 \times g[ \lfloor n/2 \rfloor ]
f[n]=2×g[⌊n/2⌋]
下面在考虑f[n]
和g[n]
的关系:
从左向右删除指的是从左端点出发,间隔删除,从右向左删除指的是从右端点出发,间隔删除,整个删除过程中在连续序列 [ 1 , n ] [1,n] [1,n]中具有对称性,因此两个过程最终剩余的编号在连续序列中也具有对称性。
f[n]
和g[n]
满足
f
[
n
]
+
g
[
n
]
=
n
+
1
f[n] + g[n] = n + 1
f[n]+g[n]=n+1
联立两式,得
f
[
n
]
=
2
×
(
⌊
n
/
2
⌋
+
1
−
f
[
⌊
n
/
2
⌋
]
)
f[n] = 2 \times (\lfloor n /2\rfloor + 1 - f[\lfloor n /2\rfloor])
f[n]=2×(⌊n/2⌋+1−f[⌊n/2⌋])