ABC175 C - Walking Takahashi に挑戦した
7035 ワード
なんかコレ↓の類題じゃね?
有識者は最適解を求められるのだろうが、
私は一個一個場合分けしないと edge case を
網羅できる自信が無かった。
WalkingTakahashi.py
x,k,d = map(int,input().split())
cnt = abs(x // d)
if x == 0:
if k%2 == 0:
print(0)
else:
print(d)
elif x > 0:
if abs(k-cnt)%2 == 0:
if k < cnt:
print(abs(x-k*d))
else:
print(abs(x-cnt*d))
else:
if k < cnt:
print(abs(x-k*d))
else:
print(min(abs(x-(cnt+1)*d),abs(x-(cnt-1)*d))) # <= ココ
else:
if abs(k-cnt)%2 == 0:
if k < cnt:
print(abs(x+k*d))
else:
print(abs(x+cnt*d))
else:
if k < cnt:
print(abs(x+k*d))
else:
print(min(abs(x+(cnt+1)*d),abs(x+(cnt-1)*d)))# <= ココ
手探り感、バリバリ(笑)
コメントにある ココ 、記述にあるように cnt+1 or cnt-1 は、その時の状況に合わせて
最小値を選択する必要がある。ここに気付くまでに WA を 2 回引いた。
もっとスマートに、サクッと出来るようになりたい。
まずは自力で辿り着けてホッとした。
Author And Source
この問題について(ABC175 C - Walking Takahashi に挑戦した), 我々は、より多くの情報をここで見つけました https://qiita.com/AKpirion/items/4878e47895185713659f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .