我排第几个
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
3
-
描述
-
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
-
输入
-
第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列;
输出
- 输出一个整数m,占一行,m表示排列是第几位; 样例输入
-
3 abcdefghijkl hgebkflacdji gfkedhjblcia
样例输出
-
1 302715242 260726926
-
第一行有一个整数n(0<n<=10000);
import java.util.Scanner;
public class Main {
private static int fun(String string,int temp) {
int sum=0;
char arr[]=string.toCharArray();
for(int i=temp+1;i<string.length();i++)
{
if(arr[i]<arr[temp])
{
sum++;
}
}
return sum;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int time=scanner.nextInt();
String cc=scanner.nextLine();
while(time--!=0)
{
String string=scanner.nextLine();
int sum=0;
for(int i=0;i<string.length();i++)
{
int num1=fun(string,i); //找比它小的字母的个数
int temp=string.length()-i-1; //求它后面的字母的个数
int num2=1;
for(int j=1;j<=temp;j++)
{
num2*=j;
}
sum=sum+num1*num2;
}
System.out.println(sum+1);
}
}
}