Sunday, January 12, 2014

Alien Numbers: エイリアンナンバー

出題元:Alien Numbers(http://code.google.com/codejam/contest/32003/dashboard)


問題
わたしたち人間が使っている10進数は10個の記号から構成されており、小さい方から「0123456789」となります。
さて、エイリアンがいたとして、彼らが使っている数字が発見されたことを想像してみてください。おそらく使われている記号は我々が使っているものとは異なるものだと思います。ここではこの数をエイリアン数と呼びましょう。
たとえば、エイリアン数が「oF8」で構成されているならば最初の10個の数は(F, 8, Fo, FF, F8, 8o, 8F, 88, Foo, FoF)となります。
(宇宙には無数のエイリアンがいるはずなのでエイリアン数も無限にあるとします。)
そこで、ある任意のエイリアン数をほかのエイリアン数に変換することを考えてみましょう。



インプット
インプットの 1行目はテストケースの数(N)を表します。そのあとにはN個のテストケースが続きます。各テストケースは以下のフォーマットで書かれています。
変換したいエイリアン数 変換元エイリアン数記号 変換先エイリアン数記号

それぞれのエイリアン数記号は小さい方から大きい方へ並んでいます。
どの記号も1つのエイリアン数記号の中で2度使われることはありません。
変換したいエイリアン数」に含まれる記号は必ず「変換元エイリアン数記号」に含まれます。
「変換したいエイリアン数」の1桁目は一番小さい値の記号ではありません。(つまり、数字の頭にゼロはつきません)
使われる記号は「0から9までの数字、大文字小文字の英字、!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~」です。



アウトプット
それぞれのテストケースに対して、"Case #x: "に続いて「変換後エイリアン数」を出力してください。



制限
1 ≤ N ≤ 100.
Small dataset
1 ≤ 変換したいエイリアン数の桁数 ≤ 4,
2 ≤ 変換元エイリアン数記号の桁数 ≤ 16,
2 ≤ 変換先エイリアン数記号の桁数 ≤ 16.

Large dataset
1 ≤  変換したいエイリアン数の桁数 ≤ 1000000000,
2 ≤ 変換元エイリアン数記号の桁数 ≤ 94,
2 ≤ 変換先エイリアン数記号の桁数 ≤ 94.



サンプル
インプット
アウトプット
4
9 0123456789 oF8
Foo oF8 0123456789
13 0123456789abcdef 01
CODE O!CDE? A?JM!.

Case #1: Foo
Case #2: 9
Case #3: 10011
Case #4: JAM!