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;
}        

  

posted @ 2017-06-20 09:15  寂地沉  阅读(123)  评论(0编辑  收藏  举报