上海计算机学会2021年8月月赛C++丙组T2罗马数字
发布时间
阅读量:
阅读量
罗马数字
内存限制: 256 Mb时间限制: 1000 ms
题目描述
罗马数字采用十进制,1 到 9 的表示方法分别为
I, II, III, IV, V, VI, VII, VIII, IX
10 到 90 的表示分别为
X, XX, XXX, XL, L, LX, LXX, LXXX, XC
100 到 900 的表示分别为
C, CC, CCC, CD, D, DC, DCC, DCCC, CM
1000 到 3000 的表示方法分别为
M, MM, MMM
更大的数字就不再解释了。
对于一个十进制的数来说,在其各位数字上分别写出对应的罗马字符并将其连起来排列,则会得到该数对应的罗马数值。例如XXX代表30、CCXVIII对应218、MI等于1001、CDXX表示420以及CDIV等于404等等。
给定一个 n,请输出它所对应的罗马数字。
输入格式
第一行:单个整数n
输出格式
第一行:若干字符表示n的罗马数字
数据范围
1≤n<4000
样例数据
输入:
19
输出:
XIX输入:
22
输出:
XXII输入:
99
输出:
XCIX
解析:打表,循环输出,详见代码:
#include <bits/stdc++.h>
using namespace std;
string a[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"}
};
int main(){
string s;
cin>>s;
for(int i=0;i<s.length();i++){
cout<<a[s.length()-i-1][s[i]-'0'];
}
return 0;
}
cpp

全部评论 (0)
还没有任何评论哟~
