#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
string intToRoman(int num) {
string result;
if (num < 1 || num > 3999) return result;
char One[] = { 'I', 'X', 'C', 'M' };
char Five[] = { 'V', 'L', 'D' };
int offset = 3, i = 1000;
while (num)
{
switch (num / i)
{
case 1:
case 2:
case 3:
for (int j = 0; j < num / i; ++j) result.push_back(One[offset]);
break;
case 4:
result.push_back(One[offset]);
result.push_back(Five[offset]);
break;
case 5:
case 6:
case 7:
case 8:
result.push_back(Five[offset]);
for (int j = 5; j < num / i; ++j) result.push_back(One[offset]);
break;
case 9:
result.push_back(One[offset]);
result.push_back(One[offset + 1]);
break;
default:
break;
}
num %= i;
i /= 10;
--offset;
}
return result;
}
};
int main()
{
int n;
Solution so;
while (cin >> n) cout << so.intToRoman(n) << endl;
return 0;
}
12.阿拉伯数字转化为罗马数字1-3999
最新推荐文章于 2022-05-16 18:01:42 发布