競プロ精進ログ

ARC123 A – Arithmetic Sequence

競プロの精進のために学びがあった問題についてまとめています。 目標は 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)

まとめ

詰まったときは、とりあえず式変形してみるとよさそう。

COMMENT

メールアドレスが公開されることはありません。