您的位置:首页 > 其它

NYOJ 题目143 第几是谁?(康拓展开)

2014-09-22 18:03 190 查看



第几是谁?

时间限制:3000 ms  |  内存限制:65535 KB
难度:3

描述现在有"abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的。但是现在我们给出它是第几小,需要你求出它所代表的序列.

输入第一行有一个整数n(0<n<=10000);

随后有n行,每行是一个整数m,它代表着序列的第几小;
输出输出一个序列,占一行,代表着第m小的序列。
样例输入
3
1
302715242
260726926


样例输出
abcdefghijkl
hgebkflacdji
gfkedhjblcia


来源[路过这]原创
上传者路过这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");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: