ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

AtCoder-ABC213 A - Bitwise Exclusive Or / B - Booby Prize【Python解答例】

f:id:ebisuke33:20210808225504p:plain

AtCoder Beginner Contest213のA とB問題についてPythonの解答例を記事にしていきます。
AtCoder Beginner Contest 213 - AtCoder



AtCoder Beginner Contest213 A - Bitwise Exclusive Or

A - Bitwise Exclusive Or

問題文

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

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

制約

・0 ≤ A,B ≤ 255
・入力に含まれる値は全て整数である

解答例

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

c = a ^ b

print(c)

解説

AとBの排他的論理和xorを答える問題です。

Pythonならビット演算子 ^ を使うことでxorを求めることができます。
^ なしなら解けそうにないです (^_^;)

cにxorの結果を代入し、出力すればOKでした。



AtCoder Beginner Contest213 B - Booby Prize

B - Booby Prize

問題文

1,…,N の番号のついた N 人の選手がゲームを行いました。選手 i のスコアは Ai であり、スコアが小さい方が上位になります。

ブービー賞に該当する選手、すなわち、下位から 2 番目の選手の番号を求めてください。

制約

・2≤N≤2×10^5
・1 ≤ Ai ≤ 10^9
・Ai は相異なる
・入力に含まれる値は全て整数である

解答例

n = int(input())

A = list(map(int, input().split()))

B = []
for i in range(n):
    B.append([A[i], i+1])

B.sort(reverse=True)

print(B[1][1])

解説

N人の選手のスコアが与えられるとき下位から2番目のブービー賞の選手の番号を答える問題です。

配列Bにスコアと選手の番号をセットにして スコアをソートします。

下位から2番目の選手の番号はB[1][1]にありますので、これを出力すればACでした。



ABC 213の関連記事はこちら
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com
ebisuke33.hatenablog.com