roiti46's blog

主に競プロ問題の解説を載せてます

Codeforces #301 Div2 A: Combination Lock

CFに参加。ABCD提出でLockしたBが撃墜されてBCDがAC。277位。レート更新がなくて助かった。

問題はこちら

問題

0から9までの数字が書かれたダイヤルがいくつか並んでいるダイヤルキーがある。今のダイヤルの並びと開錠するときのダイヤルの並びを与えられる。開錠するのにダイヤルを合計何回動かす必要があるか答えよ。

解答

0⇔9での移動をしない場合とする場合の2つのうち動かす回数が少ない方の値を加えていけばいい。
各ダイヤルで今と開錠時のダイヤルの差の絶対値を取り、その値と(10-その値)のより小さい方を足す。

N = int(raw_input())
s = map(int, list(raw_input()))
g = map(int, list(raw_input()))

ans = 0
for i in xrange(N):
    ans += min(abs(s[i] - g[i]), 10 - abs(s[i] - g[i]))
    
print ans

まとめ

何度も見たことがあるような問題。