B - Password
解説
/
セキュリティに興味がある高橋君は、デジタルアーツ株式会社に就職したい青年です。
そこで、高橋君は自分が運営するサービスであるAtCoderのセキュリティについて見なおしてみることにしました。
現在AtCoderのシステムでは、パスワードは 1 文字以上 20 文字以下の英小文字のみとしています。
そして、文字列 s に対してハッシュ値( hash(s) )を求める以下の式があり、パスワードと入力した文字列に対して、それぞれこの式で算出したハッシュ値が一致すると、入力した文字列は正しいとみなします。
hash(s) = Num(c_1) + Num(c_2) + ... + Num(c_{N}) (c_i は文字列 s の i 番目の文字を意味する)
なお、上記の式の関数 Num() とは英小文字を数字に変換する関数で、Num(
高橋君は、このシステムではパスワードと違う文字列でも簡単にハッシュ値が一致してしまうことに気づきました。
例えば、文字列
高橋君は、現在使っているパスワードに対してどのような文字列が正しいパスワードとして認識されてしまうか知りたいです。
正しいパスワード以外で条件を満たすものを 1 つ出力しなさい。
条件を満たすものが複数ある場合は、どの文字列を出力しても構いません。
もし条件を満たすパスワードが存在しない場合は
なお、AtCoderのシステムで入力できるパスワードは 1 文字以上 20 文字以下の英小文字のみなので、 答えとして出力する文字列もその条件をみたします。
入力は以下の形式で標準入力から与えられる。
与えられた正しいパスワードを表す文字列と等しいハッシュ値になる英小文字 1 文字以上 20 文字以下の文字列を、正しいパスワード以外のいずれか 1 つ出力せよ。
また、そのような文字列が存在しない場合は
なお、出力は 1 行のみとし、最後には改行を出力せよ。
実行時間制限: 2 sec / メモリ制限: 64 MB
問題文
そこで、高橋君は自分が運営するサービスであるAtCoderのセキュリティについて見なおしてみることにしました。
現在AtCoderのシステムでは、パスワードは 1 文字以上 20 文字以下の英小文字のみとしています。
そして、文字列 s に対してハッシュ値( hash(s) )を求める以下の式があり、パスワードと入力した文字列に対して、それぞれこの式で算出したハッシュ値が一致すると、入力した文字列は正しいとみなします。
hash(s) = Num(c_1) + Num(c_2) + ... + Num(c_{N}) (c_i は文字列 s の i 番目の文字を意味する)
なお、上記の式の関数 Num() とは英小文字を数字に変換する関数で、Num(
a
) = 1, Num(b
) = 2, ...., Num(z
) = 26 というように、a
から z
に対して順に 1 から 26 までの数字を返します。高橋君は、このシステムではパスワードと違う文字列でも簡単にハッシュ値が一致してしまうことに気づきました。
例えば、文字列
abc
のハッシュ値は、1+2+3=6 となりますが、文字列 bbb
のハッシュ値も 2+2+2=6 ですし、f
も 6 になってしまいます。高橋君は、現在使っているパスワードに対してどのような文字列が正しいパスワードとして認識されてしまうか知りたいです。
正しいパスワード以外で条件を満たすものを 1 つ出力しなさい。
条件を満たすものが複数ある場合は、どの文字列を出力しても構いません。
もし条件を満たすパスワードが存在しない場合は
NO
と出力しなさい。なお、AtCoderのシステムで入力できるパスワードは 1 文字以上 20 文字以下の英小文字のみなので、 答えとして出力する文字列もその条件をみたします。
入力
c_1c_2‥‥c_N
- 入力には正しいパスワードを表す長さ N(1≦N≦20) の文字列が 1 行で与えられる。
- 正しいパスワードの i 番目の文字を表す c_i は英小文字 (
a-z
) である。
- 正しいパスワードの i 番目の文字を表す c_i は英小文字 (
出力
また、そのような文字列が存在しない場合は
NO
と出力せよ。なお、出力は 1 行のみとし、最後には改行を出力せよ。
入力例 1
abc
出力例 1
bbb
- 問題文内に示しているように、ハッシュ値が 6 になります。
- 他にも
f
、aaaaaa
、cc
でも構いません。
入力例 2
zzzzzzzzzzzzzzzzzzzz
出力例 2
NO
- 条件を満たす文字列は正しいパスワードしか存在しません。
入力例 3
abcdef
出力例 3
fedcba
- ハッシュ値は 21 になります。
入力例 4
k
出力例 4
bbbbba
入力例 5
aa
出力例 5
b
- ハッシュ値が 2 になる文字列は正しいパスワード以外に、
b
しかありません。