ps:基本的康托展开
代码:
#include<stdio.h>
#include<string.h>
typedef long long LL;
LL factory[20];
void init()
{
factory[0]=1,factory[1]=1;
for(int i=2; i<18; ++i)
factory[i]=i*factory[i-1];
}
LL Contor(char str[],int n)
{
LL ans=0;
for(int i=0; i<n; ++i)
{
LL cnt=0;
for(int j=i+1; j<n; ++j)
if(str[j]<str[i])
cnt++;
ans+=cnt*factory[n-i-1];
}
return ans;
}
int main()
{
init();
char s[20];
scanf("%s",s);
printf("%lld\n",Contor(s,strlen(s)));
return 0;
}