ABC171に参加した。
AtCoder Beginner Contest 171 - AtCoder
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
A – αlphabet
大文字か小文字か判定するだけ。
s = input()
if s.isupper():
print('A')
else:
print('a')
B – Mix Juice
ソートして小さい方から足す。
n, k = map(int, input().split())
p = sorted(list(map(int, input().split())))
ans = sum(p[:k])
print(ans)
C – One Quadrillion and One Dalmatians
アルファベットは全部で26文字なので、26進数と考える。
境界条件で値がずれないように調整する。
n = int(input())
alphabet = 'abcdefghijklmnopqrstuvwxyz'
n -= 1
ans = ''
while n >= 0:
ans = alphabet[n % 26] + ans
n //= 26
n -= 1
print(ans)
D – Replacing
愚直に計算するとO(N^2)になって間に合わない。
差分だけ計算していけばO(N)で解けた。
from collections import Counter
n = int(input())
a = list(map(int, input().split()))
q = int(input())
bc = [list(map(int, input().split())) for _ in range(q)]
x = Counter(a)
ans = sum(a)
for b, c in bc:
ans += (c - b) * x[b]
print(ans)
x[c] += x[b]
x[b] = 0
E – Red Scarf
XORは交換法則が成り立り、自分同士でXORを取ると0になる
与えられた入力全てのXORを取ると、a1⊕a2⊕…⊕an の値が求まる。
これをSとすると、1つ目の値 a2⊕a3⊕…⊕an とXORを取るとa1が求まる。
以下同様にa2,a3,…,anが求まる。
from functools import reduce
n = int(input())
a = list(map(int, input().split()))
s = reduce(lambda x, y: x ^ y, a)
ans = [s ^ i for i in a]
print(*ans)
始めて本番で5完することが出来て嬉しい。
コメント