問題一覧 > 教育的問題

No.2442 線形写像

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 61
作問者 : 👑 p-adic / テスター : t98slider
2 ProblemId : 9634 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-09-05 23:30:47

問題文

入力に非負整数 NN と、2642^{64} 未満の非負整数のみからなる長さ 2N2^N の数列 AA が与えられます。

 

まずは記法と用語を導入します。2N2^N 未満の非負整数 ii に対し、AA1+i1+i 個目の成分を AiA_i と書き表します。

非負整数 i,ji, j に対し、iijj のbit排他的論理和を i XOR ji \textrm{ XOR } j と書き表します:

bit排他的論理和を知らない人向けの説明はこちらです。(クリックで開く)

 

i XOR ji \textrm{ XOR } j は、次の条件を満たす一意な非負整数 kk です。

  • 任意の非負整数 dd に対し、
    • iijj の二進法表記における 2d2^d の位が等しいならば、kk の二進法表記における 2d2^d の位は 00 である。
    • iijj の二進法表記における 2d2^d の位が等しくないならば、kk の二進法表記における 2d2^d の位は 11 である。

ただし各非負整数 nndd に対し、nn の二進法表記における 2d2^d の位とは nn2d2^d で割った商を 22 で割った余りを表します。

 

AA が良い数列であるとは、次の条件を満たすということです:

  • 2N2^N 未満の任意の非負整数 i,ji, j に対し、Ai XOR j=Ai XOR AjA_{i \textrm{ XOR } j} = A_i \textrm{ XOR } A_j である。

 

AA が良い数列であるか否かを判定してください。

背景

まず非負整数 nn に対し、2n2^n 未満の非負整数全体の集合は各要素の二進法表記を考えることで 22 元体 F2\mathbb{F}_2 上の線形空間 F2n\mathbb{F}_2^n と同一視することができます。線形代数を知らない人向けに大雑把に説明をすると、F2n\mathbb{F}_2^n0011(と同一視される項)のみからなる長さ nn の数列全体の集合です。

AA が良い数列であることは、上記の同一視のもとで AA が定める写像 F2NF264\mathbb{F}_2^N \to \mathbb{F}_2^{64}F2N\mathbb{F}_2^N の要素を代入して F264\mathbb{F}_2^{64} の要素を返す関数)が線形写像であるということと同値です。従って本問は、与えられた写像 F2NF264\mathbb{F}_2^N \to \mathbb{F}_2^{64} が線形写像であるか否かを判定する問題と等価です。

入力

入力は以下の形式で標準入力から 1+N1 + N 行で与えられます:

  • 11 行目に NN が与えられます。
  • 2N2^N 未満の各非負整数 ii に対し、2+i2 + i 行目に AiA_i が与えられます。
NN
A0A_0
\vdots
A2N1A_{2^N-1}

制約

入力は以下の制約を満たします:

  • NN0N170 \leq N \leq 17 を満たす整数である。
  • 2N2^N 未満の任意の非負整数 ii に対し、AiA_i0Ai<2640 \leq A_i < 2^{64} を満たす整数である。

出力

AA が良い数列である場合はYesと出力し、そうでない場合はNoと出力してください。

最後に改行してください。

サンプル

サンプル1
入力
0
0
出力
Yes

A=(0)A = (0) です。2N=20=12^N = 2^0 = 1 未満の非負整数は 00 のみであり、

A0 XOR 0=A0=0A0 XOR A0=0 XOR 0=0\displaystyle \begin{array}{lclcl} \displaystyle A_{0 \textrm{ XOR } 0} &\displaystyle = &\displaystyle A_0 &\displaystyle = & 0 \\ \displaystyle A_0 \textrm{ XOR } A_0 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 0 &\displaystyle = & 0 \end{array}

となるので AA は良い数列です。

サンプル2
入力
0
1
出力
No

A=(1)A = (1) です。

A0 XOR 0=A0=1A0 XOR A0=1 XOR 1=0\displaystyle \begin{array}{lclcl} \displaystyle A_{0 \textrm{ XOR } 0} &\displaystyle = &\displaystyle A_0 &\displaystyle = & 1 \\ \displaystyle A_0 \textrm{ XOR } A_0 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 1 &\displaystyle = & 0 \end{array}

となるので AA は良い数列ではありません。

サンプル3
入力
1
2
1
出力
No

A=(2,1)A = (2,1) です。

A0 XOR 0=A0=2A0 XOR A0=2 XOR 2=0\displaystyle \begin{array}{lclcl} \displaystyle A_{0 \textrm{ XOR } 0} &\displaystyle = &\displaystyle A_0 &\displaystyle = & 2 \\ \displaystyle A_0 \textrm{ XOR } A_0 &\displaystyle = &\displaystyle 2 \textrm{ XOR } 2 &\displaystyle = & 0 \end{array}

となるので AA は良い数列ではありません。

サンプル4
入力
2
0
1
0
1
出力
Yes

A=(0,1,0,1)A = (0,1,0,1) です。2N=22=42^N = 2^2 = 4 未満の非負整数は 0,1,2,30,1,2,344 つのみであり、

A0 XOR 0=A0=0A0 XOR A0=0 XOR 0=0A0 XOR 1=A1=1A0 XOR A1=0 XOR 1=1A0 XOR 2=A2=0A0 XOR A2=0 XOR 0=0A0 XOR 3=A3=1A0 XOR A3=0 XOR 1=1A1 XOR 0=A1=1A1 XOR A0=1 XOR 0=1A1 XOR 1=A0=0A1 XOR A1=1 XOR 1=0A1 XOR 2=A3=1A1 XOR A2=1 XOR 0=1A1 XOR 3=A2=0A1 XOR A3=1 XOR 1=0A2 XOR 0=A2=0A2 XOR A0=0 XOR 0=0A2 XOR 1=A3=1A2 XOR A1=0 XOR 1=1A2 XOR 2=A0=0A2 XOR A2=0 XOR 0=0A2 XOR 3=A1=1A2 XOR A3=0 XOR 1=1A3 XOR 0=A3=1A3 XOR A0=1 XOR 0=1A3 XOR 1=A2=0A3 XOR A1=1 XOR 1=0A3 XOR 2=A1=1A3 XOR A2=1 XOR 0=1A3 XOR 3=A0=0A3 XOR A3=1 XOR 1=0\displaystyle \begin{array}{lclcl} \displaystyle A_{0 \textrm{ XOR } 0} &\displaystyle = &\displaystyle A_0 &\displaystyle = & 0 \\ \displaystyle A_0 \textrm{ XOR } A_0 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 0 &\displaystyle = & 0 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{0 \textrm{ XOR } 1} &\displaystyle = &\displaystyle A_1 &\displaystyle = & 1 \\ \displaystyle A_0 \textrm{ XOR } A_1 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 1 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{0 \textrm{ XOR } 2} &\displaystyle = &\displaystyle A_2 &\displaystyle = & 0 \\ \displaystyle A_0 \textrm{ XOR } A_2 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 0 &\displaystyle = & 0 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{0 \textrm{ XOR } 3} &\displaystyle = &\displaystyle A_3 &\displaystyle = & 1 \\ \displaystyle A_0 \textrm{ XOR } A_3 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 1 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{1 \textrm{ XOR } 0} &\displaystyle = &\displaystyle A_1 &\displaystyle = & 1 \\ \displaystyle A_1 \textrm{ XOR } A_0 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 0 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{1 \textrm{ XOR } 1} &\displaystyle = &\displaystyle A_0 &\displaystyle = & 0 \\ \displaystyle A_1 \textrm{ XOR } A_1 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 1 &\displaystyle = & 0 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{1 \textrm{ XOR } 2} &\displaystyle = &\displaystyle A_3 &\displaystyle = & 1 \\ \displaystyle A_1 \textrm{ XOR } A_2 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 0 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{1 \textrm{ XOR } 3} &\displaystyle = &\displaystyle A_2 &\displaystyle = & 0 \\ \displaystyle A_1 \textrm{ XOR } A_3 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 1 &\displaystyle = & 0 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{2 \textrm{ XOR } 0} &\displaystyle = &\displaystyle A_2 &\displaystyle = & 0 \\ \displaystyle A_2 \textrm{ XOR } A_0 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 0 &\displaystyle = & 0 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{2 \textrm{ XOR } 1} &\displaystyle = &\displaystyle A_3 &\displaystyle = & 1 \\ \displaystyle A_2 \textrm{ XOR } A_1 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 1 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{2 \textrm{ XOR } 2} &\displaystyle = &\displaystyle A_0 &\displaystyle = & 0 \\ \displaystyle A_2 \textrm{ XOR } A_2 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 0 &\displaystyle = & 0 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{2 \textrm{ XOR } 3} &\displaystyle = &\displaystyle A_1 &\displaystyle = & 1 \\ \displaystyle A_2 \textrm{ XOR } A_3 &\displaystyle = &\displaystyle 0 \textrm{ XOR } 1 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{3 \textrm{ XOR } 0} &\displaystyle = &\displaystyle A_3 &\displaystyle = & 1 \\ \displaystyle A_3 \textrm{ XOR } A_0 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 0 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{3 \textrm{ XOR } 1} &\displaystyle = &\displaystyle A_2 &\displaystyle = & 0 \\ \displaystyle A_3 \textrm{ XOR } A_1 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 1 &\displaystyle = & 0 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{3 \textrm{ XOR } 2} &\displaystyle = &\displaystyle A_1 &\displaystyle = & 1 \\ \displaystyle A_3 \textrm{ XOR } A_2 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 0 &\displaystyle = & 1 \\ \displaystyle &\displaystyle &\displaystyle \\ \displaystyle A_{3 \textrm{ XOR } 3} &\displaystyle = &\displaystyle A_0 &\displaystyle = & 0 \\ \displaystyle A_3 \textrm{ XOR } A_3 &\displaystyle = &\displaystyle 1 \textrm{ XOR } 1 &\displaystyle = & 0 \end{array}

となるので AA は良い数列です。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。