首页 > 其他分享 >12. 整数转罗马数字

12. 整数转罗马数字

时间:2023-10-26 11:23:46浏览次数:37  
标签:10 12 罗马数字 value roman num 整数 500

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给你一个整数,将其转为罗马数字。

 

示例 1:

输入: num = 3
输出: "III"

代码


const pair<int, string> valueSymbols[] = {
    {1000, "M"},
    {900,  "CM"},
    {500,  "D"},
    {400,  "CD"},
    {100,  "C"},
    {90,   "XC"},
    {50,   "L"},
    {40,   "XL"},
    {10,   "X"},
    {9,    "IX"},
    {5,    "V"},
    {4,    "IV"},
    {1,    "I"},
};

class Solution {
public:
    string intToRoman(int num) {
        string roman;
        for (const auto &[value, symbol] : valueSymbols) {
            while (num >= value) {
                num -= value;
                roman += symbol;
            }
            if (num == 0) {
                break;
            }
        }
        return roman;
    }
};

标签:10,12,罗马数字,value,roman,num,整数,500
From: https://www.cnblogs.com/lihaoxiang/p/17788989.html

相关文章

  • 从“点击就送”到高攀不起,比亚迪24小时收12万份简历?
    曾几何时,比亚迪校招被网友戏称为“点击就送”,意思是只要投了简历基本都能拿到offer。然而到了2024届秋招,这件事情悄悄发生了变化。比亚迪校园招聘在近几年变得异常火爆,尤其是今年的校招更是吸引了大量学生的关注。10月10日,比亚迪在西安交通大学举办了2024届校园招聘宣讲会,吸引了大......
  • 【算法题】2899. 上一个遍历的整数
    题目:给你一个下标从0开始的字符串数组words,其中words[i]要么是一个字符串形式的正整数,要么是字符串“prev”。我们从数组的开头开始遍历,对于words中的每个“prev”字符串,找到words中的上一个遍历的整数,定义如下:k表示到当前位置为止的连续“prev”字符串数目(包含......
  • P2573 [SCOI2012] 滑雪
    P2573bzoj#2753一开始以为最优答案就是最短路径树,结果发现是错的首先我们可以观察一下,发现时间胶囊的作用就是回到某个已经经过的节点,显然是一个最小生成树但是这道题还有高度的限制,我们在生成树的时候并不能把所有的边直接按照边权排序,因为这样的话可能会出现一些不合法的边......
  • [C语言]整数在内存中的存储
    1、......
  • CF1220E Tourism
    拿到题就有一个很自然的想法,当存在一个大小\(\ge3\)的环时,我们可以把上面所有点都走一遍然后回到出发点然后想到更一般的,直接先来个边双缩点,这样任意两点间都有两条及以上的路径了,因此同一个边双内的点都可以任选由于经典结论一个连通图边双缩点后会得到一棵树,然后我们很容易想......
  • 13. 罗马数字转整数
    罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。12写做XII,即为X+II。27写......
  • (512M位)W25Q512JVFIM、W25Q512JVBIQ、W25Q512JVFIQ、W25Q512JVEIQ串行闪存提供更高的灵
    描述W25Q512JV(512M位)串行闪存为空间、引脚和电源有限的系统提供了存储解决方案。25Q系列提供超越普通串行闪存设备的灵活性和性能。它们非常适合将代码映射到RAM、直接从双通道/四通道SPI(XIP)执行代码以及存储语音、文本和数据。该器件采用2.7V至3.6V单电源供电,省电模式下功耗低至......
  • 123
    ¶  一个完整的模型训练过程包括数据准备、模型搭建、训练与优化等过程,每个过程又涉及若干不同的知识点,本篇中,我们通过一个示例,从整体层面介绍PyTorch的完整建模流程,通过这个例子,我们可以知道建模流程中的各个环节所要做的事情及其意义。在后续的博客中,我们将展......
  • Disconnected from the target VM, address: '127.0.0.1:56577', transport: 'socket'
    DisconnectedfromthetargetVM,address:'127.0.0.1:56577',transport:'socket'端口占用DisconnectedfromthetargetVM,address:'127.0.0.1:56577',transport:'socket'DisconnectedfromthetargetVM=与目标虚拟机断开连接。PS:......
  • Java 流程控制 01~12
    Java流程控制01~121.Scanner对象实现获取用户输入​ 1.1.scanner基本用法Scannerscanner=newScanner(System.in);//接受用户inputif(scanner.hasNextLine()){//判断用户是否输入Stringstr=scanner.nextLine();//获取用户输入System.out.println("......