C - Previous Permutation 解説 by Kiri8128
実際に何番目かを求める方法\(N\) があまり大きくないので、 \(P\) が何番目の順列かを実際に計算する方法でも解くことができます。
「順列を与えたときにその ID (長さ \(N\) の順列のうち辞書順で何番目か)を返す関数」、「ID を与えたときにその順列を返す関数」を事前に準備しておくと実装が簡単です。
ID の桁数はそれなりに大きくなるので、 Python などのような多倍長整数が使える言語を使うか、十分な桁数の整数演算ができるライブラリを使うと良いでしょう。
AC コード (PyPy3)
投稿日時:
最終更新: