NYOJ 题目143 第几是谁?(康拓展开)
2014-09-22 18:03
190 查看
时间限制:3000 ms | 内存限制:65535 KB
难度:3
描述现在有"abcdefghijkl”12个字符,将其按字典序排列,如果给出任意一种排列,我们能说出这个排列在所有的排列中是第几小的。但是现在我们给出它是第几小,需要你求出它所代表的序列.
输入第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个整数m,它代表着序列的第几小;
输出输出一个序列,占一行,代表着第m小的序列。
样例输入
样例输出
来源[路过这]原创
上传者路过这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");
}
}
第几是谁?
时间限制: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");
}
}
相关文章推荐
- nyoj 143 第几是谁(康拓展开的逆运算)
- NYOJ 139 我排第几个 和 NYOJ 143 第几是谁? 【康拓展开和逆康拓展开】
- nyoj__139__143__康托展开和康托逆展开
- NYOJ - 143 第几是谁? & NYOJ - 149 我排第几个
- HDOJ 题目1043 Eight(单向BFS,康拓展开,打表)
- 康托展开之我排第几个与裸康托逆展开之nyoj143
- nyoj-143-第几是谁
- nyoj139我排第几个&nyoj第几是谁?——康托展开及康托逆展开
- NYOJ143 第几是谁? 【逆康托展开】
- 【ACM】nyoj_143_第几是谁_201308071558
- nyoj139 我排第几个(康拓展开)
- NYOJ 143 第几是谁?
- NYOJ143----第几是谁?
- NYOj143 第几是谁
- nyoj 143 第几是谁?
- nyoj143 第几是谁(康拓逆展开)
- NYOJ-143 第几是谁?
- nyoj 139——我排第几个|| nyoj 143——第几是谁? 康托展开与逆康托展开
- nyoj 143 第几是谁?
- NYOJ143逆康托展开