Напишіть алгоритм для інтерпретації послідовності літер як римської цифри. (див. правила римських цифр нижче)
Кожна окрема літера має відповідне арабське десяткове значення, не максимум. Але заздалегідь у вас немає ключа, тому {A=10, I=1, X=5, ... Z=1000000}це визначається вашою інтерпретацією.
Виклик
- Прочитайте вхід через
STDINабо еквівалент і запишіть вихід черезSTDOUTабо еквівалент - Дійсні введення - це комбінації великих і малих літер, тобто відповідності
\[a-zA-Z]+\ - Введення має бути підтверджено, щоб побачити, чи можна послідовність літер трактувати як дійсну римську цифру
- Якщо вхід проходить перевірку, дійсний вихід повинен бути найменшою арабською десятковою інтерпретацією, а ключ, що використовується, тобто
Aaінтерпретується як4 {a=5, A=1}ні6 {A=5, a=1}або9 {a=10, a=1}
Римські чисельні правила
Лише букви, що представляють потужність десять, можуть повторюватися, максимум три рази поспіль і всього чотири рази, наприклад
IIIIIXXXIXЯкщо одна чи кілька літер розміщені після іншої літери більшої цінності, додайте цю суму
AAaa => 22 {A=10, a=1} (20 + 2 = 22) bbAAaa => 222 {b=100, A=10, a=1} (200 + 20 + 2 = 222)Якщо лист ставиться перед іншою літерою більшої вартості, відніміть цю суму
Aa => 4 {a=5, A=1} (5 – 1 = 4) AaA => 19 {A=10, a=1} (10 + 10 – 1 = 19) BbBaA => 194 {B=100, b=10, A=5, a=1} (100 + 100 - 10 + 5 - 1 = 194)Для віднімання сум з римських цифр застосовується кілька правил:
- Віднімайте лише сили десять, тобто
1, 10, 100...ні5, 50, 500... - Отже, жодне подвійне віднімання
18не записується якXVIIIніIIXX (10 + 10 - 1 - 1) - Не віднімайте число від одного, яке більш ніж у десять разів більше.
Ви можете відняти1з5або10, але НЕ з50, 100, 500...
- Віднімайте лише сили десять, тобто
Приклад
Input:
Aa
BAa
CCCXLVII
MMMCDVII
ABADDF
XVVX
FAASGSH
DXCCDA
AaBbcDEf
Output:
4 {a=5, A=1}
14 {B=10, a=5, A=1}
347 {C=100, L=50, X=10, V=5, I=1}
347 {M=100, D=50, C=10, V=5, I=1}
1921 {A=1000, B=100, D=10, F=1}
'XVVX' failed Roman numeral test
7191 {F=5000, A=1000, S=100, G=10, H=1}
'DXCCDA' failed Roman numeral test
4444 {a=5000, A=1000, b=500, B=100, D=50, c=10, f=5, E=1}
Aaмає значення 1 (A = 1, a = 2).