nyoj 139 我排第几个
我排第几个
时间限制: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\n",sum);
}
return 0;
}

浙公网安备 33010602011771号