ACM International Collegiate Programming Contest
Japan Domestic,2005-07-01
八王子教授は, "m","c","x","i" の4個の文字と "2","3","4","5","6","7","8","9" の8個の数字を 使った整数値の新しい表記法を考案した. 数字の "0" と "1" は使用しない.
文字 "m","c","x","i" は,それぞれ 1000,100,10,1 を表し, 数字 "2",...,"9" は,それぞれ 2,...,9 を表す. なお,この表記法はローマ数字とは関係ない.
たとえば,文字列
"5m2c3x4i", "m2c4i","5m2c3x"は, 整数 5234 (=5*1000+2*100+3*10+4*1), 1204 (=1000+2*100+4*1), 5230 (=5*1000+2*100+3*10) にそれぞれ対応する. この例の中の "5m","2c","3x","4i" は, それぞれ 5000 (=5*1000),200 (=2*100),30 (=3*10),4 (=4*1) を表す.
"m","c","x","i" の各文字の左には, "2","3",...,"9" の中の一つの数字が前置されることがある. その場合には,その数字と文字は一組のものとみなされる. そのような一組は, その文字が表す値と前置された数字が表す値との積に等しい値を表す.
文字列中に,"m","c","x","i" の各文字はたかだか1回現れる. 前置された数字がある場合には,その数字とともに現れる. 各文字の出現順序は,左から右に "m","c","x","i" である. 数字はある文字の前置数字としてだけ現れる. "m","c","x","i" の各文字は文字列中に現れないことがあるが,全体は空では無い. このようにしてできる文字列をMCXI文字列という.
上記のように,MCXI文字列は, その中の文字の値,および, 前置される数字がある場合には数字と文字の組が表す値の和を取ることにより, 正の整数値を表す. MCXI文字列が表す正の整数値をMCXI値という. また,1〜9999の任意の整数値が与えられたとき, それをMCXI値として持つMCXI文字列は唯一存在する. たとえば,"m2c4i" のMCXI値は 1000+2*100+4*1 であるので, 1204 である. 1204 を MCXI値として持つMCXI文字列は "m2c4i" だけである. "1m2c4i","mcc4i", "m2c0x4i","2cm4i" などの文字列は,MCXI文字列としては許されない. その理由は,それぞれ,"1"の使用,"c"の2回の出現,"0"の使用, "c"と"m"の誤った順序,である.
あなたの仕事は,八王子教授に代わって,2個のMCXI文字列を読み込み, そのMCXI値の和を計算して, 結果をMCXI文字列として出力するプログラムを書くことである.
入力は次のようになっている. 先頭 n は500以下の正の十進整数であり, それに続く行数を表す. 第 k+1 行は,k 番目の計算指示を表す (k=1,...,n).
n
計算指示1
計算指示2
...
計算指示n
各計算指示は,1行からなり,その形式は,
MCXI文字列1 MCXI文字列2である. 2個のMCXI文字列は1個の空白で区切られる.
各計算指示に現れる2個のMCXI文字列のMCXI値の和は9999 以下と 仮定してよい.
各計算指示について,MCXI文字列を1行出力しなさい. ただし,そのMCXI値は, 計算指示中の2個のMCXI文字列のMCXI値 の和である. 出力は空白などの余分な文字を含まないこと.
10 xi x9i i 9i c2x2i 4c8x8i m2ci 4m7c9x8i 9c9x9i i i 9m9c9x8i m i i m m9i i 9m8c7xi c2x8i
3x x 6cx 5m9c9x9i m 9m9c9x9i mi mi mx 9m9c9x9i
ここに1番目のデータ がある.
The ACM ICPC