Advertisement

上海计算机学会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
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-18/o8gzhHI5uB2v6pZUaYSXMjiCR7Fr.png)

全部评论 (0)

还没有任何评论哟~