SP1699 NSYSTEM - Numeral System
题目描述
八桥教授发明了一种新的整数表示系统,该系统使用四个小写字母 "m"、"c"、"x"、"i" 和八个数字 "2" 到 "9"。他在这个系统中不使用数字 "0" 和 "1"。
在这个系统中,字母 "m"、"c"、"x" 和 "i" 分别代表数值 1000、100、10 和 1。而数字 "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" 到 "9" 作前缀。这样的前缀数字和字母被视为一对,表示的数值等于该字母的原始值乘以前缀数字。
字母 "m"、"c"、"x" 和 "i" 在一个字符串中最多出现一次,如果有前缀数字,则必须与前缀数字一起出现,并且字母依次按 "m"、"c"、"x"、"i" 的顺序排列。同时,数字只可用作其后一字母的前缀。每个字母虽可省略,但整个字符串不能为空。这样构造的字符串被称为 MCXI 字符串。
MCXI 字符串代表一个正整数,此整数为字符串所含字母和对应前缀数字组合的总和。给定一个从 1 到 9999 的整数,存在且仅存在一个 MCXI 字符串,其对应的数值等于该整数。例如,MCXI 字符串 "m2c4i" 的对应数值为 1204(=1000 + 2\*100 + 4\*1),除此之外没有其他 MCXI 字符串能表示 1204。需要注意,字符串如 "1m2c4i"、"mcc4i"、"m2c0x4i" 和 "2cm4i" 均不是有效的 MCXI 字符串,其原因依次是使用了 "1"、重复出现 "c"、使用了 "0"、以及字母顺序错误。
你的任务是编写一个程序,读取两条 MCXI 字符串,计算它们对应数值之和,并输出结果字符串。
输入格式
第一行输入一个正整数 $n$($\le 500$),表示接下来的数据行数。接下来的每一行包含两个用空格分隔的 MCXI 字符串,表示一组需要计算的 MCXI 字符串。
$n$
specification1
specification2
...
specificationn
我们保证,每组数据中两个 MCXI 字符串的数值之和不超过 9999。
输出格式
对于每组输入,你的程序应输出一行 MCXI 字符串,其表示的数值为输入中两条 MCXI 字符串数值之和。输出中不应有其他字符。
**本翻译由 AI 自动生成**