AtCoder ABC165
AtCoder ABC165解いた分だけまとめ。
今回はAB2完。Cは問題読んで紙に書き出したけどよくわからず、DのTLE解を出して終わった。
できなかったら素直に飛ばした方がいい。最近そんなことがままある気がする。
目次
解説AC
A. We Love Golf
愚直に指定された距離の間で割り切れるか判定するだけ。
見つかったらexitして抜ける
ACしたコード
# coding:utf-8 k = int(input()) a, b = map(int, input().split()) for i in range(a, b + 1): if i % k == 0: print('OK') exit() print('NG')
B. 1%
while文を使って、指定された金額までmath.floor
で切り捨てつつ、
年ごとの金額を計算するだけ
ACしたコード
# coding:utf-8 import math x = int(input()) yen = 100 year = 0 while True: year += 1 yen = math.floor(yen * 1.01) if yen >= x: break print(year)
D. Floor Function
愚直に実装すると当然TLE。
解説によると、f(x) = f(x+B)
なのが代入すると分かる。
結果、xの範囲は0以上B-1以下に絞り込める。
BとNの大小関係は不明なので、x = B-1
か x = N
のうち小さい方が答え、らしい。
解説ACしたコード
# coding:utf-8 import math a, b, n = map(int, input().split()) x = min(b - 1, n) ans = math.floor((a * x) / b) - a * (math.floor(x / b)) print(ans)
TLEしたコード
# coding:utf-8 import math a, b, n = map(int, input().split()) ans = 0 for x in range(1, n + 1): tmp = math.floor((a * x) / b) - a * (math.floor(x / b)) ans = max(tmp, ans) print(ans)