我排第几个
时间限制:
1000
ms | 内存限制:
65535
KB
难度:
3
-
描述
-
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
ac代码
#include<stdio.h>
#include<string.h>
int a[20];
void fun()
{
int i;
a[1]=1;
for(i=2;i<20;i++)
a[i]=a[i-1]*i;
}
int main()
{
int t;
fun();
scanf("%d",&t);
getchar();
while(t--)
{
char s[100000];
int len,i,j,sum=0;
scanf("%s",s);
getchar();
len=strlen(s);
for(i=0;i<len-1;i++)
{
int c=0;
for(j=i+1;j<len;j++)
{
if(s[i]>s[j])
c++;
}
sum+=c*a[len-i-1];
}
printf("%d\n",sum+1);
}
}