#abc031d. [abc031_d]語呂合わせ
[abc031_d]語呂合わせ
問題文
日本には数字と短い文字列を対応させる語呂合わせの文化がある。
このことに興味を持った高橋君は、 以上 以下の数字のみからなる正整数 , , ... , とそれぞれの正整数に対応する文字列 , , ... , の組 (, ), (, ), ... , (, ) から、どの数字がどの文字列に対応しているかを推論することにした。
すなわち、以下の条件を満たす 個の文字列 , , ... , を求めたい。
- を満たす任意の整数 に対して、 を満たす。
- を満たす任意の整数 に対して、整数 を桁ごとに分解した際に得られる数字が上から順に , , ... , としたとき、文字列 , , ... , をこの順に連結した文字列が に等しい。
個の文字列 , , ... , を出力するプログラムを作成せよ。
入力
入力は以下の形式で標準入力から与えられる。
:
- 行目には、整数 と が空白区切りで与えられる。
- 行目から 行には、数字と文字列の組に関する情報が与えられる。 行のうち 行目には 以上 以下の数字のみからなる整数 と半角小文字英字のみからなる文字列 が空白区切りで与えられる。
- 以上 以下のどの数字も , , ... , のうち つ以上に登場する。
- 与えられる入力では、条件を満たす 個の文字列 , , ... , は必ず存在する。
部分点
この問題には部分点が設定されている。
- かつ から までのどの文字列も
a
,b
,c
のいずれかのみで構成されているデータセット に正解した場合は、 点が与えられる。 - 追加制約のないデータセット に正解した場合は、上記とは別に 点が与えられる。
出力
出力は 行からなる。 行のうち 行目には文字列 を出力せよ。
条件を満たす 個の文字列の組み合わせが複数存在する場合は、それらの組み合わせのうちどの つを出力してもよい。
出力の末尾にも改行を入れること。
入力例1
6 4
356 migoro
461 yoroi
2 ni
12 ini
出力例1
i
ni
mi
yo
go
ro
この入力例では、 i
, ni
, mi
, yo
, go
, ro
と置くことによって題意を満たす 個の文字列とすることができる。実際に、
- を桁ごとに分解した場合に , , が得られ、
mi
,go
,ro
をこの順に連結した文字列migoro
は に等しい。 - を桁ごとに分解した場合に , , が得られ、
yo
,ro
,i
をこの順に連結した文字列yoroi
は に等しい。 - を桁ごとに分解した場合に が得られ、
ni
は に等しい。 - を桁ごとに分解した場合に , が得られ、
i
,ni
をこの順に連結した文字列ini
は に等しい。
なお、この入力例はデータセット の条件を満たさないことに注意せよ。
入力例2
3 4
21 aaa
12 aaa
123 aaaaaa
13 aaaa
出力例2
a
aa
aaa
入力例3
2 3
12211 abcaaaaabcabc
2121 aaabcaaabc
222221 aaaaaaaaaaabc
出力例3
abc
aa
入力例4
2 1
12 abcab
出力例4
ab
cab