C - Previous Permutation 解説 by Kiri8128

実際に何番目かを求める方法

\(N\) があまり大きくないので、 \(P\) が何番目の順列かを実際に計算する方法でも解くことができます。

「順列を与えたときにその ID (長さ \(N\) の順列のうち辞書順で何番目か)を返す関数」、「ID を与えたときにその順列を返す関数」を事前に準備しておくと実装が簡単です。

ID の桁数はそれなりに大きくなるので、 Python などのような多倍長整数が使える言語を使うか、十分な桁数の整数演算ができるライブラリを使うと良いでしょう。

AC コード (PyPy3)

投稿日時:
最終更新: