あなたはデータ入力の作業を行っています。
この入力するデータは "0000" から "1111" までの 2 進数です。
このデータ入力の作業は単調でミスを起こしやすく困っています。
このため、入力するデータに対してある計算をし検証をすることにしました。
ここでは排他的論理和(xor) と呼ばれる計算を使って入力データのミスを検出しようとしました。
排他的論理和(xor) は各桁において、1 が奇数個あれば 1、そうでないならば 0 を出力します。
入力する N 個のデータに対して、排他的論理和(xor) を取って出力をしてください。
入力例 1 の場合は、各桁に対して以下のように計算されます。
入力される値
それぞれの値は文字列で標準入力から渡されます。標準入力からの値取得方法はこちらをご確認ください
入力は以下のフォーマットで与えられます。
N
b_1
b_2
...
b_N
- ・1 行目には、与えられる 2 進数の数 N が整数で与えられます。
- ・続く N 行の i 行目 (1 ≦ i ≦ N) には、4 桁の 2 進数を示す文字列 b_i が与えられます。
- ・入力は合計で N + 1 行となり、入力値最終行の末尾に改行が1つ入ります。
それぞれの値は文字列で標準入力から渡されます。標準入力からの値取得方法はこちらをご確認ください
期待する出力
N 個の 2 進数のデータに対して排他的論理和(xor) を取った結果を 4 桁の 2 進数で出力してください。
2 進数にした時に 4 桁未満になる場合は、0 を先頭に付け 4 桁にして出力してください。
出力の最後に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。
- ・2 ≦ N ≦ 50
- ・各 i (1 ≦ i ≦ N) について、以下をみたす
- ・(b_i の長さ) = 4
- ・b_i は "0" または "1" で構成される文字列である
入力例1
2
0011
0110
出力例1
0101
入力例2
4
0001
0010
0100
1000
出力例2
1111
# 2
# 0011
# 0110
a=int(input())
int_list=[input() for i in range(a)]
# print(int_list)
count=[0]*4
for s in int_list:
for i in range(4):
if s[i]=="1" and count[i]==0:
count[i]+=1
elif s[i]=="1" and count[i]!=0:
count[i]-=1
print(''.join(map(str, count)))
'Programming > Algorithm' 카테고리의 다른 글
C032:お得な買い物 ??? (0) | 2024.04.26 |
---|---|
C094:国民の税金 (0) | 2024.04.25 |
C079:カードを集める (0) | 2024.04.23 |
C116:あたり棒の検査 (0) | 2024.04.22 |
C148:戦闘シミュレーション (0) | 2024.04.20 |