読者です 読者をやめる 読者になる 読者になる

AOJ 0039 Roman Figure

ローマ数字 | Aizu Online Judge

何でもいい(何でもいいとは言っていない)ある程度大きな数を適当に決めるとき114514にする癖がついた、そのうちに治そう...

#include <iostream>
#include <string>
#include <map>
using namespace std;
 
int main() {
    map<char, int> m;
    m['I'] = 1;
    m['V'] = 5;
    m['X'] = 10;
    m['L'] = 50;
    m['C'] = 100;
    m['D'] = 500;
    m['M'] = 1000;
 
    string str = "";
    int sum, n;
    while (cin >> str) {
        sum = 0;
        n = 114514;
        for (int i = 0; i < str.size(); i++) {
            if (m[str[i]] <= n) {
                n = m[str[i]];
                sum += n;
            } else {
                sum += m[str[i]];
                sum -= (n * 2);
                n = 114514;
            }
        }
        cout << sum << endl;
    }
    return 0;
}