include <bits/stdc++.h>

using namespace std;

int get_value(char c)
{
char symbol[] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
int value[] = {1, 5, 10, 50, 100, 500, 1000};
for (int i = 0; i < 7; i++)
{
if (symbol[i] == c)
return value[i];
}
return -1;
}

int roman_to_int(string s)
{
int ans = get_value(s[0]);
for (int i = 1; i < s.size(); i++)
{
ans += get_value(s[i]);
if (get_value(s[i - 1]) < get_value(s[i]))
ans -= 2 * get_value(s[i - 1]);
}
return ans;
}

string int_to_roman(int num)
{
if (num == 0)
return "ZERO";
int value[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
string symbol[] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
string ans;
while (num > 0)
{
for (int i = 0; i < 13; i++)
{
if (num >= value[i])
{
num -= value[i];
ans += symbol[i];
break;
}
}
}
return ans;
}

int main()
{
string s, t;
while (true)
{
cin >> s;
if (s == "#")
break;
cin >> t;
int int_value = abs(roman_to_int(s) - roman_to_int(t));
string roman_value = int_to_roman(int_value);
cout << roman_value << endl;
}
return 0;
}

Edit

Pub: 29 Jul 2023 10:53 UTC

Views: 45