[APCS] 2017.10-實作題-邏輯運算子(Logic Operators)

問題描述

小蘇最近在學三種邏輯運算子 AND、OR 和 XOR。這三種運算子都是二元運算子, 也就是說在運算時需要兩個運算元,例如 a AND b。對於整數 a 與 b,以下三個二元運算 子的運算結果定義如下列三個表格: 


舉例來說:
(1) 0 AND 0 的結果為 0,0 OR 0 以及 0 XOR 0 的結果也為 0。
(2) 0 AND 3 的結果為 0,0 OR 3 以及 0 XOR 3 的結果則為 1。
(3) 4 AND 9 的結果為 1,4 OR 9 的結果也為 1,但 4 XOR 9 的結果為 0。 

請撰寫一個程式,讀入 a、b 以及邏輯運算的結果,輸出可能的邏輯運算為何。

輸入格式

輸入只有一行,共三個整數值,整數間以一個空白隔開。第一個整數代表 a,第二 個整數代表 b,這兩數均為非負的整數。第三個整數代表邏輯運算的結果,只會是 0 或 1。 

輸出格式 

輸出可能得到指定結果的運算,若有多個,輸出順序為 AND、OR、XOR,每個可能 的運算單獨輸出一行,每行結尾皆有換行。若不可能得到指定結果,輸出 IMPOSSIBLE。 (注意輸出時所有英文字母均為大寫字母。)


評分說明 

輸入包含若干筆測試資料,每一筆測試資料的執行時間限制(time limit)均為 1 秒,依 正確通過測資筆數給分。其中: 
    第 1 子題組 80 分,a 和 b 的值只會是 0 或 1。 
    第 2 子題組 20 分,0 ≤ a, b < 10,000。

Python 解答

for num in range(4):
a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)
flag = False

if a > 0:
a = 1
if b > 0:
b = 1

if a and b == c:
print("AND")
flag = True

if a or b == c:
print( "OR" )
flag = True

if a ^ b == True:
print("XOR")
flag = True

if not(flag):
print("IMPOSSIBLE")


資料來源:https://apcs.csie.ntnu.edu.tw/wp-content/uploads/2018/12/1061028APCSImplementation.pdf

留言