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