POJ 2685

  1 #include <iostream>
  2 #include <string>
  3 #define MAXN 26
  4 
  5 using namespace std;
  6 
  7 int _map[MAXN];
  8 
  9 string fun(int sum);
 10 
 11 int main()
 12 {
 13     //freopen("acm.acm","r",stdin);
 14     int test;
 15     int i;
 16     string s_1;
 17     string s_2;
 18     int sum_1;
 19     int sum_2;
 20     int sum;
 21     _map['m'-'a'] = 1000;
 22     _map['c'-'a'] = 100;
 23     _map['x'-'a'] = 10;
 24     _map['i'-'a'] = 1;
 25     cin>>test;
 26     while(test --)
 27     {
 28         cin>>s_1>>s_2;
 29         sum_1 = 0;
 30         sum_2 = 0;
 31         for(i = 0; i < s_1.length(); ++ i)
 32         {
 33             
 34             if(s_1[i] >= '2' && s_1[i] <= '9')
 35             {
 36                 ++ i;
 37                 sum_1 += (s_1[i-1]-'0')*_map[s_1[i]-'a'];
 38             }
 39             else
 40             {
 41                 sum_1 += _map[s_1[i]-'a'];
 42             }
 43         }
 44         for(i = 0; i < s_2.length(); ++ i)
 45         {
 46             if(s_2[i] >= '2' && s_2[i] <= '9')
 47             {
 48                 ++ i;
 49                 sum_2 += (s_2[i-1]-'0')*_map[s_2[i]-'a'];
 50             }
 51             else
 52             {
 53                 sum_2 += _map[s_2[i]-'a'];
 54             }
 55         }
 56         //cout<<sum_1<<" "<<sum_2<<endl;
 57         sum = sum_1 + sum_2;
 58         cout<<fun(sum)<<endl;
 59     }
 60 }
 61 
 62 string fun(int sum)
 63 {
 64     string s;
 65     int num_m;
 66     int num_c;
 67     int num_x;
 68     int num_i;
 69     num_m = sum/1000;
 70     sum %= 1000;
 71     num_c = sum/100;
 72     sum %= 100;
 73     num_x = sum/10;
 74     sum %= 10;
 75     num_i = sum;
 76     if(num_m != 0)
 77     {
 78         if(num_m == 1)
 79         {
 80             s += 'm';
 81         }
 82         else
 83         {
 84             s += char(num_m + '0');
 85             s += 'm';
 86         }
 87     }
 88     if(num_c != 0)
 89     {
 90         if(num_c == 1)
 91         {
 92             s += 'c';
 93         }
 94         else
 95         {
 96             s += char(num_c + '0');
 97             s += 'c';
 98         }
 99     }
100 
101     if(num_x != 0)
102     {
103         if(num_x == 1)
104         {
105             s += 'x';
106         }
107         else
108         {
109             s += char(num_x + '0');
110             s += 'x';
111         }
112     }
113 
114     if(num_i != 0)
115     {
116         if(num_i == 1)
117         {
118             s += 'i';
119         }
120         else
121         {
122             s += char('0' + num_i);
123             s += 'i';
124         }
125     }
126     return s;
127 }

 

转载于:https://www.cnblogs.com/gavinsp/p/4568638.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值