康托展开
笔记
namespace cantor{
long long* fac=new long long[20];
fac[0]=fac[1]=1;
for(int i=2;i<=20;i++) fac[i]=fac[i-1]*i;
template<typename typeofarray>
inline long long cantor(typeofarray* num,int lengthofarray){
long long cantor=0;
for(int i=1;i<=lengthofarray;i++){
long long temp=0;
for(int j=i+1;j<=lengthofarray;j++){
if(num[j]<num[i]) temp++;
}
cantor+=temp*fac[lengthofarray-i];
}
return cantor;
}
inline vector<long long> decantor(long long cantor,int lengthofarray){
vector<long long> array;
vector<long long> vec;
for(int i=1;i<=5;i++) vec.push_back(num[i]);
for(int i=lengthofarray;i>=1;i--){
long long rest=cantor