/* 19:07 - 19:24 */ #include int decode(char s[1024]) { int result = 0, len, i, radix = 0, coeff = 0; len = strlen(s); for (i = len - 1; i >= 0; i--) { if (s[i] == 'i') { result += radix * coeff; radix = 1; coeff = 1; } else if (s[i] == 'x') { result += radix * coeff; radix = 10; coeff = 1; } else if (s[i] == 'c') { result += radix * coeff; radix = 100; coeff = 1; } else if (s[i] == 'm') { result += radix * coeff; radix = 1000; coeff = 1; } else { coeff = s[i] - '0'; } } return result + radix * coeff; } int radix_char(int radix) { if (radix == 1000) { return 'm'; } if (radix == 100) { return 'c'; } if (radix == 10) { return 'x'; } if (radix == 1) { return 'i'; } return '*'; } void encode(int x, char s[1024]) { int si = 0, radix; for (radix = 1000; radix >= 1; radix /= 10) { if (x / radix == 0) { continue; } else if (x / radix == 1) { s[si] = radix_char(radix); si++; } else { s[si] = (x / radix) + '0'; si++; s[si] = radix_char(radix); si++; } x %= radix; } s[si] = '\0'; return; } int main() { int I, N, sum; char s1[1024], s2[1024], result[1024]; scanf("%d", &N); for (I = 0; I < N; I++) { scanf("%s %s", s1, s2); sum = decode(s1) + decode(s2); encode(sum, result); printf("%s\n", result); } return 0; }