-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path12-Integer-to-Roman.cpp
More file actions
51 lines (46 loc) · 1.28 KB
/
12-Integer-to-Roman.cpp
File metadata and controls
51 lines (46 loc) · 1.28 KB
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
50
51
class Solution {
public:
string intToRoman(int num)
{
int cur = 1;
string ans;
while( num )
{
int dig = num % 10;
num /= 10;
dig *= cur;
cur *= 10;
string s = \\;
if( dig == 4 )
dig -= 4, s += \IV\;
else if( dig == 9 )
dig -= 9, s += \IX\;
else if( dig == 40 )
dig -= 40, s += \XL\;
else if( dig == 90 )
dig -= 90, s += \XC\;
else if( dig == 400 )
dig -= 400, s += \CD\;
else if( dig == 900 )
dig -= 900, s += \CM\;
while( dig >= 1000 )
dig -= 1000, s += \M\;
while( dig >= 500 )
dig -= 500, s += \D\;
while( dig >= 100 )
dig -= 100, s += \C\;
while( dig >= 50 )
dig -= 50, s += \L\;
while( dig >= 10 )
dig -= 10, s += \X\;
while( dig >= 5 )
dig -= 5, s += \V\;
while( dig >= 1 )
dig -= 1, s += \I\;
reverse(s.begin(), s.end());
ans += s;
}
reverse(ans.begin(), ans.end());
return ans;
}
};