wnm的全排列
题号:NC24647
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

wnm最近迷上了全排列,简单的输出一个字符串所有的全排列已经难不住他了。最近他遇到了一个新问题,一个仅由0-9组成的字符串,对于它所有排列所构成的数字按升序排列后的序列,第n个数是多少呢?

输入描述:

首先输入一个正整数t(1<=t<=1000),表示共有t组测试数据。
对于每组测试数据,每行包含一个仅由0-9组成的字符串s(1<=|s|<=6,保证每个字符只会出现一次)和一个正整数n(1<=n<=1000)。

输出描述:

请你找到这个字符串所有的排列所构成的数字按升序排列后的第n个数字,如果存在就输出这个数字,否则输出"no solution"。
示例1

输入

复制
3
120 1
321 2
213 10

输出

复制
Case 1: 12
Case 2: 132
Case 3: no solution

说明

对于样例1:120所有排列所构成的数字按升序排序后的序列为12,21,102,120,201,210,所以第1个数字是12。
对于样例2:321所有排列所构成的数字按升序排序后的序列为123,132,213,231,312,321,所以第2个数字是132。
对于样例3:213所有排列所构成的数字按升序排序后的序列同样例2,不存在第10个数字。