#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 21
long long per[M];
int comp(void*,void*);
void swap(char*,char*);
void Permute(char[],long long,long);
int main()
{
long T,i,n;
long long t;
char str[M];
freopen("in.txt","r",stdin);
scanf("%ld",&T);
per[0] = 1;
for(i=1;i<M;i++)
per[i] = per[i-1]*i;
while(T--)
{
scanf("%s%lld",str,&t);
for(n=0;str[n];n++);
Permute(str,t,n);
printf("%s\n",str);
}
return 0;
}
int comp(const void* x,const void* y)
{
return *(char*)x - *(char*)y;
}
void swap(char* x,char* y)
{
char t;
t = *x;
*x = *y;
*y = t;
}
void Permute(char str[],long long t,long n)
{
long long d=0,i,tmp;
qsort(str,n,sizeof(char),comp);
if(!t)return;
tmp = 0;
for(i=0;i<=n&&tmp<=t;)
{
d = tmp;i++;
tmp = per[n-1]*i;
}
swap(str,str+i-1);
Permute(str+1,t-d,n-1);
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.