ABC165 復習
今回はBまでしか解けませんでした。
A問題 We Love Golf
A~Bのうち、Kで割り切れる数字があればOK、なければNGを出力します。
なので、AからBまでの数値を順にKで割る操作を繰り返せば答えが出せます。
K = int(input()) a, b = map(int, input().split()) for i in range(a, b + 1): if i % K == 0: print('OK') break else: print('NG')
B問題 1%
小数計算問題です。
X以上になるまで、100に対して1%を足していきます。
X = int(input()) n = 100 ans = 0 while True: n = int(n * 1.01) ans += 1 if n >= X: break print(ans)
C問題 Many Requirements
解けませんでした。
てっきりO(1010)かかると思ってしまい、無駄に考えてしまいました。
単調増加のリストになるので、1010はかからないんですよね。
以下、DFSを用いてありうるリストを全列挙して、最大得点がいくつになるのかを求めます。
n, m, q = map(int, input().split()) abcd = [] for i in range(q): abcd.append(tuple(map(int, input().split()))) ans = 0 def solve(A): if len(A) >= n + 1: global ans now = 0 for a, b, c, d in abcd: if A[b] - A[a] == c: now += d ans = max(ans, now) return for i in range(A[-1], m + 1): solve(A + [i]) solve([1]) print(ans)
今回はここまでです。お疲れ様でした。