anagram - アナグラム (Anagram) Editorial
by
Mitsubachi
入力で受け取る文字列を $S$ とします。 $S$ のアナグラム $T$ で $S$ より辞書順で小さいものの個数を求め、これに $1$ を足したものが答えです。
\(T\) が \(S\) より辞書順で小さい場合、 \(T\) の \(i-1\) 文字目までは \(S\) の \(i-1\) 文字目までと一致し、 \(T\) の \(i\) 文字目は \(S\) の \(i\) 文字目より小さいという \(i\) が存在します。
よって、このような \(i\) を \(1 \leq i \leq |S|\) で全探索し、各ループでは \(T\) の \(i\) 文字目としてありえる文字を調べ、それに対して \(T\) の残りの文字の並べ方 (これは \(T\) の残りの文字からなる文字列のアナグラムの個数であり、簡単な組み合わせ計算で求められます) を足し合わせることで正解できます。
posted:
last update:
