using System;
using System.Collections.Generic;
public class RomanNumeralUtility
{
private static Dictionary<char, int> RomanMap = new Dictionary<char, int>()
{
{'I', 1},
{'V', 5},
{'X', 10},
{'L', 50},
{'C', 100},
{'D', 500},
{'M', 1000}
};
public static void Main()
{
string[] inputList = {
"i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix", "x",
"xi", "xii", "xiii", "xiv", "xv", "xvi", "xvii", "xviii", "xix", "xx",
"xxi", "xxii", "xxiii", "xxiv", "xxv", "xxvi", "xxvii", "xxviii", "xxix", "xxx",
"xxxi", "xxxii", "xxxiii", "xxxiv", "xxxv", "xxxvi", "xxxvii", "xxxviii", "xxxix", "xl",
"xli", "xlii", "xliii", "xliv", "xlv", "xlvi", "xlvii", "xlviii", "xlix", "l" };
foreach (string numeral in inputList)
{
Console.WriteLine(RomanToInteger(numeral));
}
}
public static int RomanToInteger(string roman)
{
roman = roman.ToUpper();
int number = 0;
for (int i = 0; i < roman.Length; i++)
{
if (i + 1 < roman.Length && RomanMap[roman[i]] < RomanMap[roman[i + 1]])
{
number -= RomanMap[roman[i]];
}
else
{
number += RomanMap[roman[i]];
}
}
return number;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnB1YmxpYyBjbGFzcyBSb21hbk51bWVyYWxVdGlsaXR5CnsKCXByaXZhdGUgc3RhdGljIERpY3Rpb25hcnk8Y2hhciwgaW50PiBSb21hbk1hcCA9IG5ldyBEaWN0aW9uYXJ5PGNoYXIsIGludD4oKQoJewoJCXsnSScsIDF9LAoJCXsnVicsIDV9LAoJCXsnWCcsIDEwfSwKCQl7J0wnLCA1MH0sCgkJeydDJywgMTAwfSwKCQl7J0QnLCA1MDB9LAoJCXsnTScsIDEwMDB9Cgl9OwoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJc3RyaW5nW10gaW5wdXRMaXN0ID0gewoJCQkiaSIsICJpaSIsICJpaWkiLCAiaXYiLCAidiIsICJ2aSIsICJ2aWkiLCAidmlpaSIsICJpeCIsICJ4IiwKCQkJInhpIiwgInhpaSIsICJ4aWlpIiwgInhpdiIsICJ4diIsICJ4dmkiLCAieHZpaSIsICJ4dmlpaSIsICJ4aXgiLCAieHgiLAoJCQkieHhpIiwgInh4aWkiLCAieHhpaWkiLCAieHhpdiIsICJ4eHYiLCAieHh2aSIsICJ4eHZpaSIsICJ4eHZpaWkiLCAieHhpeCIsICJ4eHgiLAoJCQkieHh4aSIsICJ4eHhpaSIsICJ4eHhpaWkiLCAieHh4aXYiLCAieHh4diIsICJ4eHh2aSIsICJ4eHh2aWkiLCAieHh4dmlpaSIsICJ4eHhpeCIsICJ4bCIsCgkJCSJ4bGkiLCAieGxpaSIsICJ4bGlpaSIsICJ4bGl2IiwgInhsdiIsICJ4bHZpIiwgInhsdmlpIiwgInhsdmlpaSIsICJ4bGl4IiwgImwiIH07CgkJZm9yZWFjaCAoc3RyaW5nIG51bWVyYWwgaW4gaW5wdXRMaXN0KQoJCXsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoUm9tYW5Ub0ludGVnZXIobnVtZXJhbCkpOwkKCQl9Cgl9CgkKCXB1YmxpYyBzdGF0aWMgaW50IFJvbWFuVG9JbnRlZ2VyKHN0cmluZyByb21hbikKCXsKCQlyb21hbiA9IHJvbWFuLlRvVXBwZXIoKTsKCQlpbnQgbnVtYmVyID0gMDsKCQlmb3IgKGludCBpID0gMDsgaSA8IHJvbWFuLkxlbmd0aDsgaSsrKQoJCXsKCQkgICAgaWYgKGkgKyAxIDwgcm9tYW4uTGVuZ3RoICYmIFJvbWFuTWFwW3JvbWFuW2ldXSA8IFJvbWFuTWFwW3JvbWFuW2kgKyAxXV0pCgkJICAgIHsKCQkgICAgCW51bWJlciAtPSBSb21hbk1hcFtyb21hbltpXV07CgkJICAgIH0KCQkgICAgZWxzZQoJCSAgICB7CgkJCQludW1iZXIgKz0gUm9tYW5NYXBbcm9tYW5baV1dOwoJCSAgICB9CgkJfQoJCXJldHVybiBudW1iZXI7Cgl9Cn0=