第几是谁?
时间限制:
3000
ms | 内存限制:
65535
KB
难度:
3
-
描述
- 现在有"abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的。但是现在我们给出它是第几小,需要你求出它所代表的序列.
ac代码
#include<stdio.h>
#include<string.h>
int f[13];
void fun()
{
int i,s;
f[0]=1;
f[1]=1;
for(i=2;i<13;i++)
f[i]=f[i-1]*i;
}
int main()
{
int t;
scanf("%d",&t);
fun();
while(t--)
{
int n,v[13],t,num[13],i,j;
scanf("%d",&n);
n--;
memset(v,0,sizeof(v));
for(i=0;i<12;i++)
{
t=n/f[11-i];
for(j=0;j<12;j++)
{
if(!v[j])
{
if(t==0)
break;
t--;
}
}
num[i]=j;
v[j]=1;
n%=f[11-i];
}
for(i=0;i<12;i++)
printf("%c",num[i]+'a');
printf("\n");
}
}