- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
#include <iostream>
using namespace std;
int from_mcxi(char s[10])
{
int t=0;
// 最初の文字から見ていく
for(int i=0; s[i]!='\0'; i++){
// 数字だったら掛ける数を求める
int kake=1;
if(s[i]>='2' && s[i]<='9'){
kake=s[i]-'0';
i++;
}
//mcxiに応じて計算
switch(s[i]){
case 'm': t+=1000*kake; break;
case 'c': t+=100*kake; break;
case 'x': t+=10*kake; break;
case 'i': t+=kake; break;
}
}
return t;
}
void to_mcxi(int x)
{
// 1000の位
int a=x/1000;
if(a>0){
if(a>2){
cout << (char)(x/1000+'0');
}
cout << "m";
}
x%=1000;
// 100の位
a=x/100;
if(a>0){
if(a>2){
cout << (char)(x/100+'0');
}
cout << "c";
}
x%=100;
// 10の位
a=x/10;
if(a>0){
if(a>2){
cout << (char)(x/10+'0');
}
cout << "x";
}
x%=10;
// 1の位
if(x>0){
if(x>1){
cout << (char)(x+'0');
}
cout << "i";
}
cout << endl;
}
main()
{
int n;
cin >> n;
for(int i=0; i<n; i++){
char a[10],b[10];
cin >> a >> b;
int k=from_mcxi(a)+from_mcxi(b); // 計算して
to_mcxi(k); // 答えをmcxiで出力
}
return 0;
}