Official

A - 1-2-4 Test Editorial by mechanicalpenciI


テストの点数と正答状況の対応は以下の通りです。

 点数   問 \(1\) (\(1\)点)   問 \(2\) (\(2\)点)   問 \(3\) (\(4\)点)   点数の \(2\) 進数表記 
0 × × × \(000\)
1 × × \(001\)
2 × × \(010\)
3 × \(011\)
4 × × \(100\)
5 × \(101\)
6 × \(110\)
7 \(111\)

すなわち、点数を \(2\) 進数で表した時、下から \(i\) (\(1\leq i\leq 3\)) 番目の桁が \(1\) ならば \(i\) 番目の問題を解けており、そうでない時、解けていない事が分かります。

次に、各問題について、解けているに \(1\)、解けていないに \(0\) を対応させた時、 高橋君および青木君の正解状況に対するすぬけ君の正解状況は次のようになります。

高橋君  青木君  すぬけ君
\(0\) \(0\) \(0\)
\(0\) \(1\) \(1\)
\(1\) \(0\) \(1\)
\(1\) \(1\) \(1\)

これは OR 演算に他ならず、bitごと(=問題ごと)に計算して足し合わせれば良いため、全体で整数として OR を取ればよく、高橋君が \(A\) 点、青木君が \(B\) 点である時、 すぬけ君の点数は \( (A|B) \) 点 ( ただし、\(x|y\)\(x\)\(y\) のOR演算を表す ) として表されます。

よって、これを出力すれば良いです。
bit 演算は計算の基本となり得るので、もしうろ覚えになっている人がいれば、AND演算・XOR演算についても合わせて復習しておくと良いでしょう。

c++による実装例 :

#include <bits/stdc++.h>
using namespace std;

int main() {
	int a, b;
	cin>>a>>b;
	cout<<(a|b)<<endl;
	return 0;
}

Python による実装例 :

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

posted:
last update: