python3
class Solution:
def intToRoman(self, num: int) -> str:
shuzi=[1000,900,500,400,100,90,50,40,10,9,5,4,1]
strRoman=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]
str=""
for i,j in enumerate(shuzi):#使用枚举方法,返回列表的索引和数据
while(num>=j):
str=str+strRoman[i]
num=num-j
return str
C++
class Solution {
public:
string intToRoman(int num) {
//最简单的逻辑,就是按此步骤一步步来
//分1000,900,500,400,100,90,50,40,10,9,5,4,1情况考虑
string res="";
int numofqian=num/1000;//判断有几个1000,即可打印几个M
for(int i=0;i<numofqian;i++)
{
num=num-1000;
res+="M";
}
if(num/900==1)//判断有几个900
{
num=num-900;
res+="CM";
}
else if(num/500==1)
{
num=num-500;
res=res+"D";
}
else if(num/400==1)
{
num=num-400;
res+="CD";
}
int numofbai=num/100;//小于1000的整除上面的数,再相减,可能还会有几个100,这里是判断100的个数
for(int i=0;i<numofbai;i++)
{
num=num-100;
res=res+"C";
}
if (num/90==1)
{
num=num-90;
res=res+"XC";
}
else if(num/50==1)
{
num=num-50;
res=res+"L";
}
else if(num/40==1)
{
num=num-40;
res+="XL";
}
int numofshi=num/10;
for(int i=0;i<numofshi;i++)
{
num=num-10;
res+="X";
}
if(num/9==1)
{
num=num-9;
res+="IX";
}
else if(num/5==1)
{
num=num-5;
res+="V";
}
else if(num/4==1)
{
num=num-4;
res+="IV";
}
int numofyi=num;
for(int i=0;i<numofyi;i++)
{
num=num-1;
res+="I";
}
return res;
}
};