置换与排列
参考资料
康托展开
序号通常从 开始,所以初始令 ans=1。
ll ans=1;
for(int i=n;i>=1;i--)
{
ans=(ans+fac[n-i]*sum(a[i]))%mod;
add(a[i]);
}
例题
求 的一个给定全排列在所有 全排列中的排名。结果对 取模。Code (1)
求 的第 个全排列,其中 。Code (1)
序号通常从 开始,所以初始令 ans=1。
ll ans=1;
for(int i=n;i>=1;i--)
{
ans=(ans+fac[n-i]*sum(a[i]))%mod;
add(a[i]);
}
求 的一个给定全排列在所有 全排列中的排名。结果对 取模。Code (1)
求 的第 个全排列,其中 。Code (1)