class Solution
{
public:
string intToRoman(int num)
{
string s;
while (num != 0)
{
while (num >= 1000)
{
s += 'M';
num -= 1000;
}
while (num >= 900)
{
s += 'C';
s += 'M';
num -= 900;
}
while (num >= 500)
{
s += 'D';
num -= 500;
}
while (num >= 400)
{
s += 'C';
s += 'D';
num -= 400;
}
while (num >= 100)
{
s += 'C';
num -= 100;
}
while (num >= 90)
{
s += 'X';
s += 'C';
num -= 90;
}
while (num >= 50)
{
s += 'L';
num -= 50;
}
while (num >= 40)
{
s += 'X';
s += 'L';
num -= 40;
}
while(num >= 10)
{
s += 'X';
num -= 10;
}
while (num >= 9)
{
s += 'I';
s += 'X';
num -= 9;
}
while (num >= 5)
{
s += 'V';
num -= 5;
}
while (num >= 4)
{
s += 'I';
s += 'V';
num -= 4;
}
while (num >= 1)
{
s += 'I';
num -= 1;
}
}
return s;
}
};
int main()
{
Solution A;
cout << A.intToRoman(20) << endl;
return 0;
}
时间复杂度O(1)
空间复杂度O(1)