問題一覧 >
教育的問題
No.2442 線形写像
レベル :
/ 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ :
/
解いたユーザー数 61
作問者 : 👑
p-adic
/ テスター :
t98slider
問題文最終更新日: 2023-09-05 23:30:47
問題文
入力に非負整数 N と、264 未満の非負整数のみからなる長さ 2N の数列 A が与えられます。
まずは記法と用語を導入します。2N 未満の非負整数 i に対し、A の 1+i 個目の成分を Ai と書き表します。
非負整数 i,j に対し、i と j のbit排他的論理和を i XOR j と書き表します:
bit排他的論理和を知らない人向けの説明はこちらです。(クリックで開く)
i XOR j は、次の条件を満たす一意な非負整数 k です。
- 任意の非負整数 d に対し、
- i と j の二進法表記における 2d の位が等しいならば、k の二進法表記における 2d の位は 0 である。
- i と j の二進法表記における 2d の位が等しくないならば、k の二進法表記における 2d の位は 1 である。
ただし各非負整数 n と d に対し、n の二進法表記における 2d の位とは n を 2d で割った商を 2 で割った余りを表します。
A が良い数列であるとは、次の条件を満たすということです:
- 2N 未満の任意の非負整数 i,j に対し、Ai XOR j=Ai XOR Aj である。
A が良い数列であるか否かを判定してください。
背景
まず非負整数 n に対し、2n 未満の非負整数全体の集合は各要素の二進法表記を考えることで 2 元体 F2 上の線形空間 F2n と同一視することができます。線形代数を知らない人向けに大雑把に説明をすると、F2n は 0 か 1(と同一視される項)のみからなる長さ n の数列全体の集合です。
A が良い数列であることは、上記の同一視のもとで A が定める写像 F2N→F264(F2N の要素を代入して F264 の要素を返す関数)が線形写像であるということと同値です。従って本問は、与えられた写像 F2N→F264 が線形写像であるか否かを判定する問題と等価です。
入力
入力は以下の形式で標準入力から 1+N 行で与えられます:
- 1 行目に N が与えられます。
- 2N 未満の各非負整数 i に対し、2+i 行目に Ai が与えられます。
N
A0
⋮
A2N−1
制約
入力は以下の制約を満たします:
- N は 0≤N≤17 を満たす整数である。
- 2N 未満の任意の非負整数 i に対し、Ai は 0≤Ai<264 を満たす整数である。
出力
A が良い数列である場合はYes
と出力し、そうでない場合はNo
と出力してください。
最後に改行してください。
サンプル
サンプル1
入力
0
0
出力
Yes
A=(0) です。2N=20=1 未満の非負整数は 0 のみであり、
A0 XOR 0A0 XOR A0==A00 XOR 0==00
となるので A は良い数列です。
サンプル2
入力
0
1
出力
No
A=(1) です。
A0 XOR 0A0 XOR A0==A01 XOR 1==10
となるので A は良い数列ではありません。
サンプル3
入力
1
2
1
出力
No
A=(2,1) です。
A0 XOR 0A0 XOR A0==A02 XOR 2==20
となるので A は良い数列ではありません。
サンプル4
入力
2
0
1
0
1
出力
Yes
A=(0,1,0,1) です。2N=22=4 未満の非負整数は 0,1,2,3 の 4 つのみであり、
A0 XOR 0A0 XOR A0A0 XOR 1A0 XOR A1A0 XOR 2A0 XOR A2A0 XOR 3A0 XOR A3A1 XOR 0A1 XOR A0A1 XOR 1A1 XOR A1A1 XOR 2A1 XOR A2A1 XOR 3A1 XOR A3A2 XOR 0A2 XOR A0A2 XOR 1A2 XOR A1A2 XOR 2A2 XOR A2A2 XOR 3A2 XOR A3A3 XOR 0A3 XOR A0A3 XOR 1A3 XOR A1A3 XOR 2A3 XOR A2A3 XOR 3A3 XOR A3================================A00 XOR 0A10 XOR 1A20 XOR 0A30 XOR 1A11 XOR 0A01 XOR 1A31 XOR 0A21 XOR 1A20 XOR 0A30 XOR 1A00 XOR 0A10 XOR 1A31 XOR 0A21 XOR 1A11 XOR 0A01 XOR 1================================00110011110011000011001111001100
となるので A は良い数列です。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。