地址:https://leetcode-cn.com/problems/integer-to-roman/
思路:按照题意转换即可
Code:
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
#include<map>
#include<unordered_map>
#include<cstring>
using namespace std;
typedef long long LL;
class Solution {
public:
string fun(int x,char x1,char x5,char x9){
if(x==9) return string()+x1+x9;
if(x==4) return string()+x1+x5;
string res="";
if(x>=5){
res=x5; x-=5;
}
while(x){
res+=x1;
--x;
}
return res;
}
string intToRoman(int num) {
unordered_map<int,char> imap;
imap[1]='I';
imap[5]='V';
imap[10]='X';
imap[50]='L';
imap[100]='C';
imap[500]='D';
imap[1000]='M';
int x;
string res="";
for(int i=1000;i>=1;num%=i,i/=10)
res+=fun(num/i,imap[i],imap[i*5],imap[i*10]);
return res;
}
};
int main()
{
int x;
Solution So;
cin>>x;
cout<<So.intToRoman(x)<<endl;
return 0;
}