ABC146 - Atcoder/Python精進のための解説メモ

カレンダーアイコン
2021/09/21

ABC146 - A.Can't Wait for Holiday

AtCoder公式 | ABC146 - A.Can't Wait for Holiday

解答

s = input()
l = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
ans = 7 - l.index(s)
print(ans)

要点解説メモ

  • index数に注意して、いい感じにやる

ABC146 - B.ROT N

AtCoder公式 | ABC146 - B.ROT N

解答

u_alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
l_alpha = 'abcdefghijklmnopqrstuvwxyz'
n = int(input())
ss = input()
ans = ''
for s in ss:
    index = (u_alpha.index(s) + n) % 26
    ans += u_alpha[index]
print(ans)

別解

n = int(input())
s = input()
ai = ord('A')
ans = ''
for i in s:
    ei = ord(i) - ai
    ei = (ei + n) % 26
    ans += chr(ei + ai)
print(ans)

要点解説メモ

  • アルファベット配列を手元に用意しておくと簡単でよい
  • unicodeで大文字Aを基本にしつつ計算してもよい

ABC146 - C.Buy an Integer

AtCoder公式 | ABC146 - C.Buy an Integer

解答

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

def is_ok(n):
    return a * n + b * len(str(n)) <= x

def m_bisect(ng, ok):
    while abs(ok - ng) > 1:
        mid = (ok + ng) // 2
        if is_ok(mid):
            ok = mid
        else:
            ng = mid
    return ok

print(m_bisect(10 ** 9 + 1, 0))

要点解説メモ

  • 全探索すると間に合わない
  • めぐる式二分探索で検索だ

ABC146 - D.

AtCoder公式 | ABC146 - D.

解答

まだ解いていません

要点解説メモ