EX21 - Bitwise Exclusive Or Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

説明ページに戻る


この問題は ABC213 の A 問題「Bitwise Exclusive Or」に追記したものです。また、テストケースは別のものとなっています。

問題文

0 \le A, B \le 255 の整数 A, B が与えられます。
A \text{ xor } C = B となる 0 以上の整数 C を求めてください。

なお、そのような C はただ 1 つ存在し、0 \le C \le 255
であることが証明されます。

xor とは

整数 a, b のビットごとの排他的論理和 a \text{ xor } b
は、以下のように定義されます。

  • a \text{ xor } b を二進表記した際の 2^k\ (k \ge 0) の位の数は、a, b を二進表記した際の 2^k の位の数のうち一方のみが 1 であれば 1、そうでなければ 0 である。

例えば、3 \text{ xor } 5 = 6 となります。
(二進表記すると: 011 \text{ xor } 101 = 110

制約

  • 0 \le A, B \le 255
  • 入力に含まれる値はすべて整数である

入力

入力は以下の形式で標準入力から与えられる。

A B

出力

答えを出力せよ。

入力例 1

3 6

出力例 1

5

3 は二進表記で 0115 は二進表記で 101 なので、これらの \text{ xor } は二進表記で 110、十進表記で 6 です。
このように、3 \text{ xor } 5 = 6 となるので、答えは 5 です。

入力例 2

10 12

出力例 2

6

図


ヒント

クリックでヒントを開く
  • x \mathop{\mathrm{xor}} yx ^ y と書けます。
  • C の候補である 0 から 255 の整数を全て試し、A \mathop{\mathrm{xor}} C=B を満たすか確かめましょう。
  • 余裕があれば C を直接求める方法も考えてみましょう。


テスト入出力

書いたプログラムがACにならず、原因がどうしてもわからないときだけ見てください。

クリックでテスト入出力を見る

テスト入力1

255 255

テスト出力1

0

テスト入力2

123 45

テスト出力2

86

テスト入力3

101 154

テスト出力3

255


解答例(Python)

クリックで解答例1を見る
A, B = map(int, input().split())

# C の候補を全て試し、A xor C = B を満たすか確かめる
for C in range(256):
  if (A ^ C) == B:
    print(C)

クリックで解答例2を見る
A, B = map(int, input().split())

# A xor C = B のとき、C = A xor B となる
print(A ^ B)