#include "stdio.h"
int main(){
unsigned char is_used[1002];
int n,m,i,j,Count,c;
int jiecheng[12]={1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800};
while(scanf("%d%d",&n,&m)!=EOF){
for(i=1;i<=n;i++)is_used[i]=0;
if(n>=13){
for(i=1;i<=n-12;i++){
printf("%d ",i);
is_used[i]=1;
}
for(i=1;i<=12;i++){
Count=0;
c=(m-1)/jiecheng[12-i]+1;
m=(m-1)%jiecheng[12-i]+1;
for(j=n-11;j<=n;j++){
if((!is_used[j])&&(Count<c))Count++;
if(Count==c){
printf("%d ",j);
is_used[j]=1;
break;
}
}
}
}
else{
for(i=1;i<=n;i++){
Count=0;
c=(m-1)/jiecheng[n-i]+1;
m=(m-1)%jiecheng[n-i]+1;
for(j=1;j<=n;j++){
if((!is_used[j])&&(Count<c))Count++;
if(Count==c){
printf("%d ",j);
is_used[j]=1;
break;
}
}
}
}
printf("\b\n");
}
return 0;
}
HDOJ1027
最新推荐文章于 2018-11-12 20:19:07 发布