Roman Figure

「Roman Figure」の編集履歴(バックアップ)一覧に戻る

Roman Figure - (2015/08/20 (木) 03:44:04) のソース

AOJ Roman Figure
ローマ数字をアラビア数字に変換する問題。
ローマ数字は後ろから計算したほうが変換は楽です。
後ろから見てそこまでの最大の数より小さいなら引く。
大きいか同じなら足す。
それだけです。

 #include<stdio.h>
 #include<string.h>
 
 int to_num(char c){
	int n;
	if(c=='I')n=1;
	if(c=='V')n=5;
	if(c=='X')n=10;
	if(c=='L')n=50;
	if(c=='C')n=100;
	if(c=='D')n=500;
	if(c=='M')n=1000;
	return n;
 }
 
 int main(){
	char cs[101];
	while(scanf("%s",cs)!=EOF){
		int n=0,ans=0,len=strlen(cs)-1;
		n=ans=to_num(cs[len]);
		for(int j=len-1;j>=0;j--){
			int m=to_num(cs[j]);
			if(m<n){
				ans-=m;
			}else if(m>n){
				ans+=m;
				n=m;
			}else{
				ans+=m;
			}
		}
		printf("%d\n",ans);
	}
 }