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

2020/11/26

ABC174 - A.Air Conditioner

AtCoder公式 | ABC174 - A.Air Conditioner

解答

x = int(input())
  print('Yes' if x >= 30 else 'No')

要点メモ

  • 特になし

ABC174 - B.Distance

AtCoder公式 | ABC174 - B.Distance

解答

n, d = map(int, input().split())
ans = 0
for _ in range(n):
    x, y = map(int, input().split())
    if (x ** 2 + y ** 2) ** 0.5 <= d:
        ans += 1
print(ans)

要点メモ

  • 特になし

ABC174 - C.Repsept

AtCoder公式 | ABC174 - C.Repsept

解答

k = int(input())
kkk = [0] * k
kkk[0] = 7 % k
ans = -1
for i in range(1, k):
    kkk[i] = (kkk[i - 1] * 10 + 7) % k
for j in range(k):
    if kkk[j] == 0:
        ans = j + 1
        break
print(ans)

要点メモ

  • 7の数列のうち、最初に出てくるmodK=0を求める問題
  • K項目まで求めれば、必ず同じmodKのものが数列上に存在する(鳩ノ巣原理って呼ぶの初めて知った)
  • 10倍して7を足す、という単調増加なので、同じmodKがある以上、そのあとは繰り返しになる
  • 高々K項目まで求めればよい

ABC174 - D.Alter Altar

AtCoder公式 | ABC174 - D.Alter Altar

解答

n = int(input())
ccc = input()
cnt_r = ccc.count('R')
ans = 0
for i in range(cnt_r):
    if ccc[i] == 'W':
        ans += 1
print(ans)

要点メモ

  • Rをすべて左に寄せるために何回交換が必要かを考える
  • どこでも入れ替えられるので、Rの個数分左からWの数を数えればよいとわかる
  • →右側のRと交換できるうちは交換して、そうでなくなったら色変換が起きる感じ