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; }
変換表作って書かれた通り実装するだけ。