🦁
[AtCoder Beginners Selection]B問題解いてみた!
初めに
本記事ではAtCoder Beginners SelectionのB問題を解説します!
ABC081B - Shift only
まず、N, Aを入力として受け取ります。
N = int(input())
A = list(map(int, input().split()))
次に、リストAの中に含まれる整数が偶数かどうか判定するための変数flag、リストAに含まれる整数を2で割ったものに置き換える操作を繰り返した回数を表す変数countを定義します。
flag = 1
count = 0
リストAの中に含まれる整数が全て偶数だった場合は、リストAに含まれる整数を2で割ったものに置き換え、リストA内に奇数が含まれる場合は、処理を終了するというプログラムを記述します。
while True:
for i in range(N):
if A[i] % 2 != 0:
flag = 0
if flag == 0:
break
for i in range(N):
A[i] /= 2
count += 1
print(count)
ABC087B - Coins
まず、A, B, C, Xを入力として受け取ります。
A = int(input())
B = int(input())
C = int(input())
X = int(input())
次に、500円玉を0~A枚、100円玉を0~B枚、50円玉を0~C枚の全ての組み合わせについて、合計金額とX円が等しくなるか判定します
count = 0
for i in range(A+1):
for j in range(B+1):
for k in range(C+1):
total = 500 * i + 100 * j + 50 * k
if X == total:
count += 1
print(count)
ABS083B - Some Sums
まず、N, A, Bを入力として受け取ります。
N, A, B = map(int, input().split())
次に、総和を保存する変数totalを定義します。
total = 0
次に、1以上N以下の整数それぞれに対して、各桁の和がA以上B以下かどうか判定し、当てはまる場合はtotalに加えます。
for num in range(1, N+1):
if A <= sum(list(map(int, str(num)))) <= B:
total += num
print(total)
ABC088B - Card Game for Two
まず、N, aを入力として受け取ります。
N = int(input())
a = list(map(int, input().split()))
次に、AliceとBobが取った点数を求めます。aを降順に並べ替え、Aliceはインデックスが0, 2, 4...の和を求め、Bobはインデックスが1, 3, 5...の和を求めます。その後、差を算出します。
a.sort(reverse=True)
alice = sum(a[0::2])
bob = sum(a[1::2])
print(alice - bob)
ABC085B - Kagami Mochi
まず、N, dを入力として受け取ります。dはリストに格納します。
N = int(input())
d = [int(input()) for _ in range(N)]
次に、リストdから重複を除き、要素数を数えます。
print(len(set(d)))
Discussion