我排第几个
时间限制: 1000ms
内存限制: 128000KB
64位整型: Java 类名:
题目描述
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
输入
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
随后有n行,每行是一个排列;
输出
输出一个整数m,占一行,m表示排列是第几位;
样例输入
3 abcdefghijkl hgebkflacdji gfkedhjblcia
样例输出
1 302715242 260726926
来源
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char str[13],i,j,k;
long long int sum=1,term=1;
scanf("%s",str);
for(i=0;i<12;i++)
{
term=1;k=0;
for(j=i+1;j<12;j++)
if(str[i]>str[j])
k++;
for(j=1;j<=11-i;j++)
term=term*j;
sum+=term*k;
}
printf("%lld\n",sum);
}
return 0;
}