寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume0 - 0039 : Roman Figure

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Roman Figure"
https://onlinejudge.u-aizu.ac.jp/problems/0039
・ローマ数字
僕が作成、提出したコードは、以下のとおりです。

・Aizu Online Judge in C++ #Volume0 - 0039 : Roman Figure
/*
Aizu Online Judge in C++ #Volume0 - 0039 : Roman Figure
 https://onlinejudge.u-aizu.ac.jp/problems/0039
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int main(void){
    ll a,m,i;
    ll n[256];
    n['I']=1;
    n['V']=5;
    n['X']=10;
    n['L']=50;
    n['C']=100;
    n['D']=500;
    n['M']=1000;
    char s[128];
    while(cin>>s){
        for(a=m=0,i=strlen(s)-1;i>=0;i--){
            if(n[s[i]]<m){
                a-=n[s[i]];
            }else{
                a+=m=n[s[i]];
            }
        }
        cout<<a<<endl;
    }
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/