用力戳我直达原题~
这题很特别水。不过注意两个点,见注释。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
cin >> a >> b;
//测试数据弱,但还是要考虑前导0
for
(int i = 0; i < a.size(); i++)
{
if
(a[i] !=
'0'
)
{
a = a.substr(i,a.size());
break
;
}
}
for
(int i = 0; i < b.size(); i++)
{
if
(b[i] !=
'0'
)
{
b = b.substr(i,b.size());
break
;
}
}
map<int,char>mp;
stack<char>sta;
for
(int i = 0; i <= 9; i++)
mp[i] =
'0'
+ i;
mp[10] =
'J'
; mp[11] =
'Q'
; mp[12] =
'K'
;
int i = a.size() - 1;
int j = b.size() - 1;
bool f =
true
;
//注意有A>B 和B>A的情况!
while
(i >=0 || j >= 0)
{
int x = (i >= 0 ? a[i] -
'0'
: 0);
int y = (j >= 0 ? b[j] -
'0'
: 0);
if
(f)
sta.push( mp[(y + x) % 13] );
else
sta.push( mp[ y - x >= 0 ? y - x : 10 + y - x ] );
i--,j--,f = !f;
}
while
(!sta.empty())
{
cout << sta.top();
sta.pop();
}
cout << endl;
}
|