#include<stdio.h>
#include<string>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
string intToRoman(int num){//数字转罗马
int base[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
string str[]={ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX",
"V", "IV", "I" };
string roman="";
int i=0;
while(num!=0){
if(num>=base[i]){
num-=base[i];
roman+=str[i];
}
else{
i++;
}
}
return roman;
}
int RomanToint(string str){
int n=0;
for(int i=0;i<str.length();i++)
{
char c = str[i];
if(c == 'I') n+=1;
if(c == 'V')n+=5;
if(c == 'X') n+=10;
if(c == 'L') n+=50;
if(c == 'C') n+=100;
if(c == 'D') n+=500;
if(c == 'M') n+=1000;
}
int a=str.find("IV");
if(a>=0){
n-=2;
}
int b=str.find("IX");
if(b>=0){
n-=2;
}
int f=str.find("XL");
if(f>=0){
n-=20;
}
int c=str.find("XC");
if(c>=0){
n-=20;
}
int d=str.find("CD");
if(d>=0){
n-=200;
}
int e=str.find("CM");
if(e>=0){
n-=200;
}
return n;
}
void main(){
//int num;
// scanf("%d",&num);
// string roman=intToRoman(num);
// printf("%s",roman.c_str());//printf输出string类型需要调用c_str方法
string str;
cin>>str;//不能使用scanf输入,会使str.length()一直为0
//scanf("%s",str);
int t=RomanToint(str);
printf("%d",t);
}
lc12-整数转罗马数字,罗马转整数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 整数转罗马数字 12. 整数转罗马数字 c++ code:AC 68ms 超50%这题就是细心就可以,慢慢划分。 ...
- 需求 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为...