Problema número 735

¡Soldados! ¡Numérense!

Tiempo máximo: 1,000 sMemoria máxima: 4096 KiB
Foto de un soldado del ejército romano

Antes de cada batalla era habitual que los centuriones romanos pidieran a todos sus soldados que se numeraran, para confirmar que no faltaba ninguno que hubiera desertado ante el riesgo inminente de la lucha. El primer soldado decía su número y, a continuación, todos sabían quién debía decir el suyo después.

Este proceso es habitual hoy en otros contextos, pero en la Antigua Roma, dar el número siguiente a otro no era tan fácil como ahora porque los números romanos no eran especialmente cómodos para sumar.

Los números romanos son un sistema aditivo/sustractivo, donde se utilizan algunas letras para representar valores, y el uso de varias de ellas suma o resta al acumulado total. La tabla siguiente indica los símbolos válidos en los números romanos y su valor en nuestra notación decimal:

I1V5X10L50C100D500M1000

Las reglas de la notación moderna de números romanos son:

  • Los símbolos se escriben de izquierda a derecha, empezando por los de mayor valor.
  • Un símbolo seguido por otro de valor igual o menor, suma (XI es 11), mientras que un símbolo seguido por uno de mayor valor, resta (IX es 9).
  • La unidad (I) y demás potencias de 10 (X, C y M) se pueden repetir tres veces seguidas sumando.
  • El resto (V, L y D) no pueden repetirse (su suma daría un símbolo de las potencias de 10) ni usarse restando.
  • La unidad (I) y resto de potencias de 10 pueden aparecer restando, sin repetirse, a los dos símbolos inmediatamente superiores (es válido IV y IX pero no IL o IC).

Entrada

La entrada está compuesta de un conjunto de líneas, cada una con un número romano (con letras mayúsculas) siguiendo las reglas descritas, entre I (1) y MMMCMXCVIII (3998).

Salida

Por cada caso de prueba el programa escribirá el valor siguiente al de la entrada, en números romanos en mayúscula siguiendo las reglas de la notación moderna.

Entrada de ejemplo

I
III
XXXIX
MCDXCIX

Salida de ejemplo

II
IV
XL
MD