数を作る 〜 横へな 2013.4.6 の参考問題

問題

数字が書かれたカードを組み合わせて4桁の数を作る。作ることができる数のうち、小さい方から指定された順位の数を出力する。
カードは 0 1 2 3 4 5 6 7 8 の9種類があり、6のカードは逆さまにすると9として使うことができる。 4桁の数の先頭に0を使うことはできない。


計算の例

入力は 13:01167 のような文字列で与えられる。
この入力は 0 1 1 6 7 の 5 枚のカードから4枚選んで作ることが出来る4桁の数のうち、小さい方から 13 番目の数を出力することを意味する。
作ることが出来る数は、小さい順に
1016 1017 1019 1061 1067 1071 1076 1079 1091 1097 1106 1107 1109 ...
なので、 13 番目の 1109 を出力する。

補足

サンプルデータ

# 入力 期待
0 13:01167 1109
1 1:1234 1234
2 2:1234 1243
3 7:1234 2134
4 24:1234 4321
5 25:1234 -
6 2:1116 1119
7 2:0116 1019
8 3:6666 6696
9 16:6666 9999
10 10:01267 1097
11 14:111167 1671
12 1:1111 1111
13 2:1111 -
14 1:666633 3366
15 72:666611 9999
16 73:666622 -
17 1:666600 6006
18 52:666600 9999
19 53:666600 -
20 25:06688 8086
21 93:02566 6502
22 11:06688 6809
23 169:01268 9801
24 174:01268 9821
25 66:012288 8201

C/C++/Java 用のテストデータ