半加算器

京子ちゃんは 二進数 1 けたの整数 A と B を使って、 A + B を計算したいと思っています。



上記の画像のように、 A と B を足した結果 (2 進表記) の下から 2 けた目の値を C 、下から 1 けた目の値を S とします。 C と S を出力してください。

 

#入力

A B

 

 

#出力

C, S をこの順に、半角スペース区切りで出力してください。末尾に改行を入れ、余計な文字、空行を含んではいけません。

C S

 

 

#コード

a,b = map(int,input().split())

if a == 1 and b == 1:
    c = 1
    s = 0
elif (a == 0 and b == 1) or (a == 1 and b == 0):
    c = 0
    s = 1
else:
    c = 0
    s = 0

print(c,s)

 

 

#参考

    • まず、 C について考えましょう。 C は A と B が両方とも 1 のときだけ 1 になります。これは、以下の表のように AND 演算の結果と等しいです。つまり、 C = A AND B となります。
      A B C
      0 0 0
      0 1 0
      1 0 0
      1 1 1
    • 次に S について考えます。 S は A と B のどちらか一方のみ 1 のときだけ 1 になります。これは、以下の表のように XOR 演算の結果と等しいです。つまり、 S = A XOR B となります。
A B S
0 0 0
0 1 1
1 0 1
1 1 0
    • 半加算器は簡易的な論理回路図で表現するとこのようになります。

 

a, b = map(int, input().split())

c = a & b
s = a ^ b

print(c, s)