AtCoder ABC 212 B – Weak Password Python解説

スポンサーリンク

Weak Password

4 桁の暗証番号 X1X2X3X4が与えられます。 番号は先頭の桁が 0 であることもあり得ます。 暗証番号は以下のいずれかの条件をみたすとき弱い暗証番号と呼ばれます。

4 桁とも同じ数字である。
1≤i≤3 をみたす任意の整数 i について、 Xi+1が、 Xiの次の数字である。
ただし、 0≤j≤8 について j の次の数字は j+1 であり、 9 の次の数字は 0 である。

与えられた暗証番号が弱い暗証番号ならば Weak を、そうでないならば Strong を出力してください。

AtCoder Beginner Contest「Weak Password」

与えられた暗証番号が強いか弱いかを答える問題です。4桁とも同じ数字、もしくは1<= i<= 3を満たすXi + 1が、Xiの次の数字なら弱い暗証番号になります。9の次の数字は0になるので注意しましょう。

9の次の数字が0になるので、実装するには、Xiに1を足した数値を10で割る方法がおすすめです。
この結果とXi + 1の数値が同じであるかを1 <= i <= 3の範囲調べます。

x1, x2, x3, x4 = input()

if x1 == x2 == x3 == x4:
    print("Weak")
    
elif (int(x1) + 1) % 10 == int(x2) and (int(x2) + 1) % 10 == int(x3) and (int(x3) + 1) % 10 == int(x4):
    print("Weak")
    
else:
    print("Strong")

例えばX1が9だとすると、(int(x1) + 1) % 10の結果は、(9 + 1) % 10 = 0となり、9の次の数字を0として扱えるようになります。この結果を次のXi + 1の数値と比べることで、連続した数字かどうかわかります。