2.2.27
(a)
いっぱい円を描いて実験すると次のようになる。
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 3 | 1 | 3 | 5 | 7 | 1 | 3 | 5 | 7 | 9 | 11 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 13 | 15 | 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 |
16までは円を描いたがそこまでで規則性は見えたので17以降は以下のプログラム(python)で確認をした。
for n in range(2,25+1,1):
xs = list(range(1,n+1))
skip_num = 2
i = -1
for _ in range(n-1):
for num in range(skip_num):
i = (i+1) % n
while xs[i] == None: i = (i+1) % n
xs[i] = None
ans = []
for i in range(n):
if xs[i] != None:
ans.append(xs[i])
print(n, ans)
(b)
のときとなっていること、そこから2ずつ増えていること、また偶数が出てこないことが分かる。 円を描いてみると分かるが、最初の1巡目で偶数番目の人が消え、2巡目以降はそれまでに消えた人を無視して数字を再度時計回りに付け替えると やはり偶数番目の人が消えることになる。 このことからの偶奇で再帰的には定まりそうに見える。
が偶数のときを考え、とする。このとき1巡目でが消え、残ったで再度1から順番に始めることになる。 この残った人間にと新しく割り当てる。このとき新しくが割当てられた人の元の番号はである。 新しく割り当てた番号の1から同じように始まるので再帰的に計算ができて最後に残るのはである。 これらからと分かる。
次にと奇数のときを考える(但し)。 このとき1巡目でが消え、残るのはである。 この場合は次は3から始めることになる。 そこでを新しくと割り当てる。 このとき新しくが割当てられた人の元の番号はである。 先と同じ議論によりとなる。
これらより以下の漸化式を得る。
この式を見るとを2で割り小数部を無視(右シフト)したもののみに依存しているので、1を根とする完全二分木にすると 規則性が見えそうである。実際に書いてみると各深さにおいて一番左の頂点が1となり、右の兄弟(姉妹)に移るにつれて2ずつ増えることが分かる。
よってと予測できる(ただしは自然数で)。 これはに関する帰納法で示せる。