我排第几个201308062121.txt

我排第几个
时间限制: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 main()
{
 int n;
 scanf("%d",&n);
 while(n--)
 {
  char a[15];
  long sum=0,c;
  int b,i,j,d,k=0;
  scanf("%s",a);
    for(i=0;i<12;i++)
    {
    for(b=0,j=i+1;j<12;j++)
    {
    if(a[i]>a[j])
    {b++;}
    }
    //printf("%d\n",b);
    k++;
    for(c=d=12-k;d>1;d--)
    {c=c*(d-1);}
    sum=sum+b*c;
    }
    sum+=1;
    printf("%ld\n",sum);
 }
 return 0;
}
   
   

posted @ 2013-08-06 21:29  夏子藤  阅读(142)  评论(0编辑  收藏  举报