題目說明#
給三個整數值,第一個代表 a,第二個代表 b,這兩數均為正數,第三個為運算結果,只會是 0 或 1。
輸出可能得到指定結果的運算,若有多個,輸出順序為AND、OR、XOR,若不可能得到指定結果,輸出IMPOSSIBLE。
解題過程#
首先輸入 a, b, ans ,因為 a, b有可能不是 1 ,要把不是 0 的值全設為 1 以利於後續判斷。
int a, b, ans, can = 1;
cin >> a >> b >> ans;
a=(a != 0? 1 : 0),b=(b != 0? 1 : 0);
接下來用邏輯運算子進行運算,如果可以就輸出,並把 can 設為 0 ,如果三個條件都沒成立則會輸出 IMPOSSIBLE 。
if((a && b) == ans) can = 0, cout << "AND" << endl;
if((a || b) == ans) can = 0, cout << "OR" << endl;
if((a ^ b) == ans) can = 0, cout << "XOR" << endl;
if(can) cout << "IMPOSSIBLE" << endl;
程式就完成了!
完整程式碼如下
#include <iostream>
using namespace std;
int main()
{
int a, b, ans, can = 1;
cin >> a >> b >> ans;
a=(a != 0? 1 : 0),b=(b != 0? 1 : 0);
if((a && b) == ans) can = 0, cout << "AND" << endl;
if((a || b) == ans) can = 0, cout << "OR" << endl;
if((a ^ b) == ans) can = 0, cout << "XOR" << endl;
if(can) cout << "IMPOSSIBLE" << endl;
return 0;
}
