トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

05dc1.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define SMAX 100

int mcxi(char s[SMAX])
{
	int i,b,num=0;
	
	for(i=0; i<strlen(s); i++){
		if(isdigit(s[i])){
			b=s[i]-'0';
			i++;
		}else{
			b=1;
		}
		switch(s[i]){
			case 'm': num+=b*1000; break;
			case 'c': num+=b*100; break;
			case 'x': num+=b*10; break;
			case 'i': num+=b*1; break;
		}
	}
	
	return(num);
} 

int main(void)
{
	int a,i,n,sum;
	char s1[SMAX],s2[SMAX];
	
	scanf("%d", &n);;
	
	for(i=0; i<n; i++){
		scanf("%s %s", s1, s2);
//		printf("%s + %s\n",s1, s2);
		sum=mcxi(s1)+mcxi(s2);
//		printf("%d + %d = %d\n",mcxi(s1), mcxi(s2), sum);
		
		a=sum/1000;
		if(a==1){
			printf("m");
		}else if(a>1){
			printf("%dm",a);
		}
		
		a=(sum%1000)/100;
		if(a==1){
			printf("c");
		}else if(a>1){
			printf("%dc",a);
		}
		
		a=(sum%100)/10;
		if(a==1){
			printf("x");
		}else if(a>1){
			printf("%dx",a);
		}
		
		a=sum%10;
		if(a==1){
			printf("i");
		}else if(a>1){
			printf("%di",a);
		}
		printf("\n");
	}
	
	return(0);
}