問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
ハッシュ関数の中には特殊なものが存在します。まず完全ハッシュ関数とは、全ての正しい入力に対して重複なくハッシュ値が対応するハッシュ関数です。そして、最小完全ハッシュ関数とは、全ての正しい入力 n 個に対して重複なくハッシュ値が対応し、さらにその値域が n 個の連続な整数(通常は 0 から n-1 )となっているハッシュ関数です。本問では、この最小完全ハッシュ関数を実装してみましょう。
a, b, c, d, e, f の 6 つの文字からなる長さが 6 の文字列 S が与えられます。以下の条件をみたすハッシュ関数をつくり、そのハッシュ値を計算してください。
aaaaaa
のハッシュ値は 0 で aaaaab
は 1 というように、辞書順に 1 ずつ増えていき、最後の ffffff
のハッシュ値は 46655
となる。S
上記の条件をみたすハッシュ関数を用いてハッシュ値を計算し、1 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
a
, b
, c
, d
, e
, f
のいずれかで構成される長さ 6 の文字列aaaaaa
0
ffffff
46655
abcdef
1865