競プロの精進のために学びがあった問題についてまとめています。 目標は AtCoder 水色!
今のレートは茶色です。
問題
ARC123 A – Arithmetic Sequenceを解きました。
考察
当初は、A3 – A2 と A2 – A1 の値の差を考えて、+2 で調整しつつ +1 もしくは -1 で施行回数を最小化する方法を考えていました。
それなりにスムーズに実装できたのですが、4WAが取れず、原因もわからず…。
想定解は、式変形を行い X = 2*A2 – A1 -A3 の形にすることで、Xに対して2を加算するか、-1するかのいずれかの施行を繰り返し、Xを0にするまでの回数を調べるというものだったようです。
コード
a,b,c = map(int,input().split())
ans = 0
t = 2 * b - a - c
if t >= 0:
ans = t
else:
if abs(t) % 2 == 0:
ans = abs(t) // 2
else:
ans = (abs(t) + 1) // 2 + 1
print(ans)
まとめ
詰まったときは、とりあえず式変形してみるとよさそう。