| For All Solvers
OMC212

OMC212(E)

 初期状態において同じ数列に含まれている 22 つの整数(つまり 1n256 1 \leq n \leq 256 を用いて 2n1,2n 2n-1 , 2n と表される 22 整数)を合わせてペアと呼ぶことにする.任意のペアについて,そのペアを含む数列を対象として操作を行うたびにペアの 22 数の間にある数の個数が 1,3,7,1, 3, 7, \dots 個と増えていく.また数列の長さに着目すれば,そのペアを含む数列は合計で 88 回操作の対象になるとわかる.これより,最終的な数列 TT ではペアの関係にある 22 数の間には 255255 個の数があるから,TT11 番目から 256256 番目の数は奇数,残りは偶数であることがわかる.また左から 11 番目から 256256 番目の数が決まれば残りの数も一意に決まるため,f(1)+f(2)++f(256)f(1) + f(2) + \cdots + f(256) の値を求めてそれを 22 倍すればよい.
 T=(K0,K1,,K511)T=(K_0,K_1,\dots,K_{511}) とおく(問題文とは違い,添字が 00 から始まることに注意せよ).最後の操作の直前の状態では長さ 25625622 つの数列 (K0,K2,,K510)(=T0),(K1,K3,,K511)(=T1)(K_0,K_2,\dots,K_{510})(=T_0),\quad (K_1,K_3,\dots,K_{511})(=T_1) があり,操作における要素の大小関係についての制約から,K2kK2k+1 (0k255)K_{2k}\leq K_{2k+1}\ (0\leq k\leq 255) が成り立つ.これは次のように表現できる:

  • Kn,KmK_n,K_m が長さ 256256 の同じ列に含まれるための必要十分条件は,n,mn,m を二進数表記したとき下 11 桁が一致することである.
  • n<mn\lt m かつ n,mn,m を二進数表記したとき下から 11 桁目のみが異なるならば KnKmK_n\leq K_m

 また T0T_0 が新しく書き込まれる操作において,操作の対象となる 22 つの数列は (K0,K4,,K508),(K2,K6,,K510)(K_0,K_4,\dots,K_{508}),\quad (K_2,K_6,\dots,K_{510}) であり,操作での制約より K4kK4k+2 (0k127)K_{4k}\leq K_{4k+2}\ (0\leq k\leq 127) が成り立つ.T1T_1 についても同様に考えれば次を得る:

  • Kn,KmK_n,K_m が長さ 128128 の同じ列に含まれるための必要十分条件は,n,mn,m を二進数表記したとき下 22 桁が一致することである.
  • n<mn\lt m かつ n,mn,m を二進数表記したとき下から 22 桁目のみが異なるならば KnKmK_n\leq K_m

 これ以降も同様に考えれば,次の事実を得る:

  • BnB_nnn の二進数表記で下から ii 桁目が 11 となるような非負整数 ii 全体の集合とする(例えば B10={2,4}B_{10}=\{2,4\}).このとき BnBmB_n\subset B_m ならば KnKmK_n\leq K_m

具体的には BnBm B_n \subset B_m を満たす n,m n, m について「nn のある一つの桁のみを選んでその桁を 00 から 11 にする」という操作を繰り返すことで n=mn=m にすることができることから KnKm K_n \leq K_m が従う.またこの条件を満たすような TT であれば,初期状態から適切に操作を繰り返すことで作成可能であることも分かる.
 これを踏まえて,i=0,1,,255i=0,1,\dots,255 に対し f(i+1) f(i+1) を求める.BnB_{n} の要素数を cnc_{n} で表すことにすると,BnBi B_n \subsetneq B_{i} を満たす nn2ci1 2^{c_{i}} - 1 個,BiBn B_{i} \subsetneq B_n を満たす nn28ci1 2^{8-c_{i}} - 1 個あることから 2×(2ci1)+1Ki12×(25628ci)+1 2\times(2^{c_{i}}-1) + 1 \leq K_{i-1}\leq 2\times(256-2^{8-{c_{i}}})+1 が必要である.逆に,これを満たす任意の正の奇数が Ki K_{i} になり得る.従って f(i+1)=25828ci2ci f(i+1) = 258-2^{8-c_{i}}-2^{c_{i}} が得られた.ci=k (0k8) c_{i} = k \ ( 0 \leq k \leq 8 ) を満たす i (0i255)i \ ( 0 \leq i \leq 255 )(8k) \dbinom{8}{k} 個あるため,求めるべき値は 2(k=08 (25828k2k)×(8k))=105852. 2 \left( \sum_{k=0}^{8} \ (258-2^{8-k}-2^{k}) × \dbinom{8}{k} \right) = \mathbf{105852}.

解説YouTube

解説YouTubeが存在しません.