罗马数字 | ||||||
| ||||||
Description | ||||||
给定一个正的十进制数n(1<=n<=3999),将其转换成罗马数字。 罗马数字的规则是由7个基本数字组成: I:1 V:4 X:10 L:50 C:100 D:500 M:1000 如果你要表示9或4的时候,在符号10或5前加一个1的符号表示减去1,表示40、90和900时也类似。 例如:1 I 2 II 3 III 4 IV 5V 6 VI 9 IX 10 X 14 XIV 22 XXII 40 XL 900 CM 1000 M 1666 MDCLXVI 3000 MMM | ||||||
Input | ||||||
多组测试数据处理到文件末,每组数据为一个正整数n(1<=n<=3999) | ||||||
Output | ||||||
输出为一行,输出罗马数字。 | ||||||
Sample Input | ||||||
3 1666 | ||||||
Sample Output | ||||||
III MDCLXVI | ||||||
Source |
#include<stdio.h>
#include<string.h>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
string Num4[10]={"M","MM","MMM"};
string Num3[10]={"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
string Num2[10]={"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
string Num1[10]={"I","II","III","IV","V","VI","VII","VIII","IX"};
int main()
{
int n;
while(~scanf("%d",&n))
{
int num4=n/1000;
n%=1000;
int num3=n/100;
n%=100;
int num2=n/10;
n%=10;
int num1=n%10;
if(num4)
{
cout<<Num4[num4-1];
}
if(num3)
{
cout<<Num3[num3-1];
}
if(num2)
{
cout<<Num2[num2-1];
}
if(num1)
{
cout<<Num1[num1-1];
}
cout<<endl;
}
}