AtCoder Beginner Contest 096
A - Day of Takahashi
各月に対して、高橋の日になる月の数と日の数との組み合わせは 通りずつです
月 日において、
- の場合、合計 日
- の場合、合計 日
となります
# coding: utf-8 a, b = [int(i) for i in input().split()] print(a - 1 if a > b else a)
B - Maximum Sum
を最大化するためには、 の中で最大の整数を 倍する操作を 回繰り返せば良いです
つまり、 で求めることができます
# coding: utf-8 a, b, c = [int(i) for i in input().split()] k = int(input()) print(a + b + c + max(a, b, c) * (2 ** k - 1))
C - Grid Repainting 2
#
のマスの上下左右に#
があるか判定すれば良いです
# coding: utf-8 h, w = [int(i) for i in input().split()] s = [list(input()) for _ in range(h)] flg = True for i in range(1, h - 1): for j in range(1, w - 1): # '#'のマスの上下左右に'#'がない場合、目標を達成することができない if s[i][j] == "#" and s[i - 1][j] == s[i + 1][j] == s[i][j - 1] == s[i][j + 1] == ".": flg = False print('Yes' if flg else 'No')
D - Five, Five Everywhere
で割って 余る素数を列挙すれば良く、これらの素数から 個選んだ合計は全て の倍数となります(つまり、合成数です)
# coding: utf-8 n = int(input()) ps = [] # 素数チェック def isPrime(target): for i in range(2, target): if target % i == 0: return False return True # 5で割って1余る数を55,555まで検証する for i in range(11, 55555, 5): # 素数の場合、数列に加える if isPrime(i): ps.append(i) # 数列の長さがNの場合、処理を抜ける if len(ps) == n: break print(*ps)