🦁

[AtCoder Beginners Selection]B問題解いてみた!

2022/06/07に公開

初めに

本記事ではAtCoder Beginners SelectionのB問題を解説します!
https://atcoder.jp/contests/abs

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)))
GitHubで編集を提案

Discussion