0039 - Roman Figure

#include <iostream>
#include <string>
using namespace std;

int arabia(char rome)
{
	if (rome == 'I')	return 1;
	else if (rome == 'V')	return 5;
	else if (rome == 'X')	return 10;
	else if (rome == 'L')	return 50;
	else if (rome == 'C')	return 100;
	else if (rome == 'D')	return 500;
	else if (rome == 'M')	return 1000;
}

void Slove(string rome)	{
	int number, i;

	number=0;
	for (i=0; i<rome.size()-1; ++i)	{
		if ( arabia(rome[i]) >= arabia(rome[i+1]) )	number+=arabia(rome[i]);
		else	{
			number+=arabia(rome[i+1])-arabia(rome[i++]);
		}
	}
	if ( i < rome.size() )	number+=arabia(rome[i]);
	cout << number << endl;
}

int main(void)	{
	string rome;

	while (cin >> rome)
		Slove(rome);
	return 0;
}

変換表作って書かれた通り実装するだけ。