简单的算法问题5——整数转化为罗马字符
以下算法均使用C++编写
以下题目均来自计蒜客
题目
给定一个整数 num,将整数转换成罗马数字。
如 1,2,3,4,51,2,3,4,5 对应的罗马数字分别为I,II,III,IV,V等,更详细的说明见此 链接链接。
输入格式
第一行输入一个整数num(1≤num≤3999)。
输出格式
输出num对应的罗马数字。
形如:
输入
123
输出
CXXIII
刨坑点
我觉得真的很容易,就跟以前我们做用1至12月来算节气是一个道理,用一串数组来保存春夏秋冬,当然你也可以不用数组,用case,你喜欢就好,然后就是用整除或者取余来判断。
代码
#include<iostream>
using namespace std;
using std::string;
string IntToRoman(int num);
int main(){
int num;
cin>>num;
cout<<IntToRoman(num);
return 0;
}
string IntToRoman(int num){
if(num>0&&num<4000)
{
string c[4][10]={
{"","I","II","III","IV","V","VI","VII","VIII","IX"},
{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},
{"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
{"","M","MM","MMM"}
};
string Roman;
Roman.append(c[3][num/1000]);
Roman.append(c[2][num/100%10]);
Roman.append(c[1][num/10%10]);
Roman.append(c[0][num%10]);
return Roman;
}
}
测试成功!~