初期状態において同じ数列に含まれている 2 つの整数(つまり 1≤n≤256 を用いて 2n−1,2n と表される 2 整数)を合わせてペアと呼ぶことにする.任意のペアについて,そのペアを含む数列を対象として操作を行うたびにペアの 2 数の間にある数の個数が 1,3,7,… 個と増えていく.また数列の長さに着目すれば,そのペアを含む数列は合計で 8 回操作の対象になるとわかる.これより,最終的な数列 T ではペアの関係にある 2 数の間には 255 個の数があるから,T の 1 番目から 256 番目の数は奇数,残りは偶数であることがわかる.また左から 1 番目から 256 番目の数が決まれば残りの数も一意に決まるため,f(1)+f(2)+⋯+f(256) の値を求めてそれを 2 倍すればよい.
T=(K0,K1,…,K511) とおく(問題文とは違い,添字が 0 から始まることに注意せよ).最後の操作の直前の状態では長さ 256 の 2 つの数列
(K0,K2,…,K510)(=T0),(K1,K3,…,K511)(=T1)
があり,操作における要素の大小関係についての制約から,K2k≤K2k+1 (0≤k≤255) が成り立つ.これは次のように表現できる:
- Kn,Km が長さ 256 の同じ列に含まれるための必要十分条件は,n,m を二進数表記したとき下 1 桁が一致することである.
- n<m かつ n,m を二進数表記したとき下から 1 桁目のみが異なるならば Kn≤Km.
また T0 が新しく書き込まれる操作において,操作の対象となる 2 つの数列は
(K0,K4,…,K508),(K2,K6,…,K510)
であり,操作での制約より K4k≤K4k+2 (0≤k≤127) が成り立つ.T1 についても同様に考えれば次を得る:
- Kn,Km が長さ 128 の同じ列に含まれるための必要十分条件は,n,m を二進数表記したとき下 2 桁が一致することである.
- n<m かつ n,m を二進数表記したとき下から 2 桁目のみが異なるならば Kn≤Km.
これ以降も同様に考えれば,次の事実を得る:
- Bn を n の二進数表記で下から i 桁目が 1 となるような非負整数 i 全体の集合とする(例えば B10={2,4}).このとき Bn⊂Bm ならば Kn≤Km.
具体的には Bn⊂Bm を満たす n,m について「n のある一つの桁のみを選んでその桁を 0 から 1 にする」という操作を繰り返すことで n=m にすることができることから Kn≤Km が従う.またこの条件を満たすような T であれば,初期状態から適切に操作を繰り返すことで作成可能であることも分かる.
これを踏まえて,i=0,1,…,255 に対し f(i+1) を求める.Bn の要素数を cn で表すことにすると,Bn⊊Bi を満たす n は 2ci−1 個,Bi⊊Bn を満たす n は 28−ci−1 個あることから 2×(2ci−1)+1≤Ki−1≤2×(256−28−ci)+1 が必要である.逆に,これを満たす任意の正の奇数が Ki になり得る.従って f(i+1)=258−28−ci−2ci が得られた.ci=k (0≤k≤8) を満たす i (0≤i≤255) は (k8) 個あるため,求めるべき値は
2(k=0∑8 (258−28−k−2k)×(k8))=105852.
解説YouTubeが存在しません.