ABC197 - Atcoder/Python精進のための解説メモ
2022/12/27
ABC197 - A.Rotate
AtCoder公式 | ABC197 - A.Rotate解答
s = input()
print(s[1:] + s[0])
要点解説メモ
- 文字列をスライスして結合できるのがpythonのかわいいところ
ABC197 - B.Visibility
AtCoder公式 | ABC197 - B.Visibility解答
h, w, x, y = map(int, input().split())
x -= 1
y -= 1
sss = [input() for _ in range(h)]
cnt = -3
for i in range(y, w):
if sss[x][i] == '.':
cnt += 1
if sss[x][i] == '#':
break
for i in range(y, -1, -1):
if sss[x][i] == '.':
cnt += 1
if sss[x][i] == '#':
break
for i in range(x, h):
if sss[i][y] == '.':
cnt += 1
if sss[i][y] == '#':
break
for i in range(x, -1, -1):
if sss[i][y] == '.':
cnt += 1
if sss[i][y] == '#':
break
print(cnt)
要点解説メモ
- 4方向に愚直に数える
- 初期マスを重複して数えてしまうので-3カウントから始める
ABC197 - C.ORXOR
AtCoder公式 | ABC197 - C.ORXOR解答
n = int(input())
a = list(map(int, input().split()))
ans = 1 << 30
for i in range(2 ** (n - 1)):
xsum = 0
tmp = a[0]
for j in range(1, n):
if (i >> (j - 1)) & 1:
xsum ^= tmp
tmp = a[j]
else:
tmp |= a[j]
xsum ^= tmp
ans = min(ans, xsum)
print(ans)
要点解説メモ
- しきりを入れるか入れないかでbit全探索
- bit全探索はめちゃ便利なのでしっかり学んでおきたいところ
- ORでもXORでも順番に論理演算しても結果は変わらないのも知っておきたい
ABC197 - D.
AtCoder公式 | ABC197 - D.解答
まだ解いていません