题目描述
長さ N の非負整数列 $ A=(A_1,A_2,\ldots,A_{N}),B=(B_1,B_2,\ldots,B_{N}) $ が与えられます。
数列 A に対し以下の操作を 70000 回以下行うことで A を B に一致させられるか判定し、可能な場合は実際に操作手順を一つ示してください。
- 整数 K (1≤ K ≤ N) を選ぶ。全ての i (2≤ i ≤ K) について、Ai の値を Ai−1 ⊕ Ai で置き換える。この置き換えは全ての i (2≤ i ≤ K) に対して同時に行う。
ただしここで、⊕ はビット単位 XOR 演算を表します。
ビット単位 XOR 演算とは非負整数 A,B のビット単位 XOR 演算、A⊕ B は、以下のように定義されます。
- A⊕ B を二進表記した際の 2k (k≥ 0) の位の数は、A,B を二進表記した際の 2k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。
例えば、3⊕ 5 = 6 となります(二進表記すると: 011⊕ 101 = 110)。
输入格式
入力は以下の形式で標準入力から与えられる。
N A1 A2 … AN B1 B2 … BN
输出格式
70000 回以下の操作で A を B に一致させられない場合、No
と出力せよ。一致させられる場合、操作回数を M 回とし、i 回目の操作で選んだ整数を Ki として以下の形式で出力せよ。
Yes M K1 K2 … KM
条件を満たす解が複数存在する場合、どれを出力しても正解とみなされる。
题目大意
给定长度为 n 的非负整数列 a=(a1,a2,⋯,an),b=(b1,b2,⋯,bn)。
判断能否对数列 a 进行以下操作最多 70000 次,使得数列 a 与 b 一致,如果能,给出一个可行的操作步骤。
- 操作:选择整数 k(1≤k≤n)。对于所有 i(2≤i≤k),使 ai←ai−1⊕ai。
其中,⊕ 表示按位 XOR(异或)运算。
3
1 2 0
1 2 3
Yes
2
2 3
2
10 100
1 0
No
2
1152921504606846975 0
1152921504606846975 0
Yes
0
提示
制約
- 2 ≤ N ≤ 1000
- 0 ≤ Ai, Bi < 260
- 入力は全て整数
Sample Explanation 1
この出力例では、操作によって数列 A は以下のように変化します。 - 初期状態:A=(1, 2, 0) - 1 回目の操作後:A=(1, 3, 0) - 2 回目の操作後:A=(1, 2, 3) 2 回の操作後、A と B は一致しているのでこの出力は条件を満たします。