ps:康托展开基础知识
代码:
#include<stdio.h>
#include<string.h>
typedef long long LL;
LL factory[15];
void init()
{
factory[0]=1,factory[1]=1;
for(int i=2; i<15; ++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+1;
}
int main()
{
init();
int n;
scanf("%d",&n);
char s[15];
while(n--)
{
scanf("%s",s);
printf("%lld\n",Contor(s,strlen(s)));
}
return 0;
}