12. Integer to Roman整数转罗马数字

Spark Graphx 项目实战(航班飞行网图分析) 航班飞行网图分析一.需要的技能点二.任务描述三.数据探索1.下载数据2.数据格式四.航班飞行网图问题分析1.构建航班飞行网图2.统计航班飞行网图中机场与航线的数量3.计算最长的飞行航线4.找出最繁忙的机场5.找出最重要的飞行航线6.找出最便宜的飞行航线五.代码实现 一.需要的技能点 Spark GraphX API Spark GraphX PageRank Spark GraphX Pregel 二.任务描述 需求概述: 探索航班飞行网图数据 构建航班飞行网图 使用Spark GraphX完成下列任 阅读详情

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.

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

Symbol 字符      Value数值
I                         1
V                       5
X                     10 
L                     50
C                     100
D                     500
M                     1000
For example, 2 is written as II in Roman numeral, just two one's added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:

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

I can be placed before V (5) and X (10) to make 4 and 9. 

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X can be placed before L (50) and C (100) to make 40 and 90. 

X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C can be placed before D (500) and M (1000) to make 400 and 900.

C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
Given an integer, convert it to a roman numeral.

给你一个整数,将其转为罗马数字。

Example 1:示例 1:

Input: num = 3                输入: num = 3
Output: "III"                        输出: "III"
Explanation: 3 is represented as 3 ones.


Example 2:

Input: num = 58
Output: "LVIII"
Explanation: L = 50, V = 5, III = 3.


Example 3:

Input: num = 1994
Output: "MCMXCIV"
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

示例 2:

输入: num = 4
输出: "IV"


示例 3:

输入: num = 9
输出: "IX"


示例 4:

输入: num = 58
输出: "LVIII"
解释: L = 50, V = 5, III = 3.


示例 5:

输入: num = 1994
输出: "MCMXCIV"
解释: M = 1000, CM = 900, XC = 90, IV = 4.
 

Constraints:提示:

1 <= num <= 3999

C语言(超出时间限制)

char * intToRoman(int num){
    char Roman[16];
    int i=0,temp;
    while(num)
    {
        if(num/1000>0)
        {
            temp=num/1000;
            while(temp)
            {
                if(temp>0&&temp<4)
                {
                    Roman[i++]='M';
                    temp--;
                }
            }
            if(temp==0)
            {
                num=num%1000;
                continue;
            }
        }
        if(num/100>0)
        {
            temp=num/100;
            while(temp)
            {
                if(temp==9)
                {
                    Roman[i++]='C';
                    Roman[i++]='M';
                    temp=temp-9;
                }
                else if(temp>4&&temp<9)
                {
                    Roman[i++]='D';
                    while(temp>5)
                    {
                        Roman[i++]='C';
                        temp--;
                    }
                    temp=temp-5;
                }
                else if(temp==4)
                {
                    Roman[i++]='C';
                    Roman[i++]='D';
                    temp=temp-4;
                }
                else if(temp>0&&temp<4)
                {
                    Roman[i++]='C';
                    temp--;
                }
            }
            if(temp==0)
            {
                num=num%100;
                continue;
            }
        }
        if(num/10>0)
        {
            temp=num/10;
            while(temp)
            {
                if(temp==9)
                {
                    Roman[i++]='X';
                    Roman[i++]='C';
                    temp=temp-9;
                }
                else if(temp>4&&temp<9)
                {
                    Roman[i++]='L';
                    while(temp>5)
                    {
                        Roman[i++]='X';
                        temp--;
                    }
                    temp=temp-5;
                }
                else if(temp==4)
                {
                    Roman[i++]='X';
                    Roman[i++]='L';
                    temp=temp-4;
                }
                else if(temp>0&&temp<4)
                {
                    Roman[i++]='X';
                    temp--;
                }
            }
            if(temp==0)
            {
                num=num%10;
                continue;
            }
        }
        if(num>0)
        {
            while(num)
            {
                if(num==9)
                {
                    Roman[i++]='I';
                    Roman[i++]='X';
                    temp=temp-9;
                }
                else if(temp>4&&temp<9)
                {
                    Roman[i++]='V';
                    while(temp>5)
                    {
                        Roman[i++]='X';
                        temp--;
                    }
                    temp=temp-5;
                }
                else if(temp==4)
                {
                    Roman[i++]='I';
                    Roman[i++]='V';
                    temp=temp-4;
                }
                else if(temp>0&&temp<4)
                {
                    Roman[i++]='I';
                    temp--;
                }
            }
            if(temp==0)
            {
                continue;
            }
        }        
    }
    return Roman;

}

C语言:

char * intToRoman(int num){
    char* ans=(char*)malloc(16*sizeof(char));
    int cur=0;
    while(num>=1000)
    {
        ans[cur++]='M';
        num-=1000;
    }
    if(num>=900)
    {
        ans[cur++]='C';
        ans[cur++]='M';
        num-=900;
    }
    else if(num>=500)
    {
        ans[cur++]='D';
        num-=500;
    }
    else if(num>=400)
    {
        ans[cur++]='C';
        ans[cur++]='D';
        num-=400;
    }
    while(num>=100)
    {
        ans[cur++]='C';
        num-=100;
    }
    if(num>=90)
    {
        ans[cur++]='X';
        ans[cur++]='C';
        num-=90;
    }
    else if(num>=50)
    {
        ans[cur++]='L';
        num-=50;
    }
    else if(num>=40)
    {
        ans[cur++]='X';
        ans[cur++]='L';
        num-=40;
    }
    while(num>=10)
    {
        ans[cur++]='X';
        num-=10;
    }
    if(num>=9)
    {
        ans[cur++]='I';
        ans[cur++]='X';
        num-=9;
    }
    else if(num>=5)
    {
        ans[cur++]='V';
        num-=5;
    }
    else if(num>=4)
    {
        ans[cur++]='I';
        ans[cur++]='V';
        num-=4;
    }
    while(num>=1)
    {
        ans[cur++]='I';
        num--;
    }
    ans[cur]='\0';
    return ans;
}

执行结果:通过

执行用时:8 ms, 在所有 C 提交中击败了37.27%的用户

内存消耗:5.7 MB, 在所有 C 提交中击败了83.05%的用户

通过测试用例:3999 / 3999

SIwave仿真手册——信号完整性仿真之S参数的提取(二) 上一篇简单了讲述了软件的各个操作界面,本次博客更新关于的仿真,因为第二章完整的内容比较多,所以分成好几篇博客进行分享。 阅读详情

相关推荐

【OpenClaw 故障排查完全指南】

OpenClaw 故障排查指南摘要 本指南针对OpenClaw 2026.2.26版本常见问题提供解决方案,适用于Windows/Linux/macOS平台。 核心问题及修复方案: 飞书插件连接失败:删除冲突插件或重装OpenClaw Ollama认证错误:设置环境变量OLLAMA_API_KEY="ollama-local" 配置警告:可安全忽略的安全扫描提示 端口占用:查找并终止占用18789端口的进程 插件重复加载:清理重复插件目录 快速修复: 提供一键修复PowerShell脚本

weixin_37572294的博客 1万+

12. Integer to Roman

12. Integer to Roman题目 题目的意思很简单:将整数转为罗马数字表示。解题思路1、首先,先介绍一下罗马数字的7个基本单元“I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、M(1000)”。 2、接着让我们看一下数字转罗马数字的一些规则: 1)相同数字连写不超过3次。 2)小的数字在大的数字的左边时,表示大数减小数。但是小的数字仅限于I、X、C三个。所

caneo_nj的博客 293

企业微信消息推送API实战:5步搞定可信IP与域名配置(含Python代码示例)

本文详细解析了企业微信消息推送API实战中的关键配置步骤,特别是可信IP与可信域名的配置流程。通过5个清晰步骤,结合Python代码示例,指导开发者快速完成安全通信链路搭建,避免常见错误,确保消息推送服务稳定可靠。

qsc9012345的博客 996

leetcode 12. Integer to Roman(整数转罗马数字)

leetcode 12

蓝羽飞鸟的博客 463

海康威视GigE工业相机的python调用demo

默认路径安装完成后,在路径C:\Program Files (x86)\MVS\Development\Samples\Python\BasicDemo下的BasicDemo.py中,海康威视官方提供了基本的调用方法,本文也是基于这个修改的。BasicDemo.py提供了通过枚举选择相机的方法,在官方的另一个DEMO:ConnectSpecCamera.py中提供了另一种不通过枚举,直接访问特定IP相机的方法,也可以参考。另外,如果每台相机都定义了唯一的用户定义名,也可以通过用户定义名来区分相机。

xulibo5828的博客 2108

深入解析rknn-toolkit2混合量化:如何为RK3588和RK356X选择最佳量化策略

本文深入解析了RKNN-Toolkit2混合量化技术,针对瑞芯微RK3588和RK356X芯片的硬件特性差异,提供了最佳量化策略选择指南。通过混合量化技术,开发者可以在保持较高推理效率的同时显著降低精度损失,特别适用于边缘计算场景。文章详细介绍了混合量化的技术原理、实战流程及芯片专属优化策略,帮助开发者充分利用硬件特性提升模型性能。

dog123的博客 258

LeetCode(12) IntegerToRoman

题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 比较基础的题目,没有用到什么数据结构和算法。使用了维基百科了解了罗马数字的书写规则。 一开始按照个十百千的位数老老实实地写转换程序,写出来一看,啰嗦得囧。 //啰嗦版

BUILD 2610

海康VisionMaster零代码开发实战:从PLC工程师到视觉专家的捷径

本文为PLC工程师提供了利用海康VisionMaster视觉平台实现零代码视觉开发的实战指南。文章详细阐述了如何通过图形化流程设计替代传统编程,快速搭建视觉检测应用,并实现与PLC的无缝通讯,是工程师从设备控制迈向视觉系统集成的有效捷径。

weixin_29201859的博客 293

Leetcode 12. Integer to Roman 整数转罗马数字

12. Integer to Roman 整数转罗马数字 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/integer-to-roman/ 题目描述 罗马数字包含以下七种字符:&amp;amp;nbsp;I,&amp;amp;nbsp;V,&amp;amp;nbsp;X,&amp;amp;nbsp;L,C,D&amp;amp;nbsp;和&amp;amp;nbsp;M。 字符

CoderWangSon 324

深入解析Transformer三大注意力机制:自注意力、交叉注意力与因果自注意力

注意力机制是深度学习中的核心概念,它模拟了人类在处理信息时选择性聚焦的能力。其基本原理是通过计算查询与键的相似度,动态地为值分配权重,从而提取关键信息。这一机制解决了传统序列模型(如RNN)难以并行化和捕获长距离依赖的痛点,技术价值在于显著提升了模型的计算效率和表征能力。在自然语言处理、计算机视觉等应用场景中,注意力机制已成为构建强大模型的基石。本文聚焦于Transformer架构中的三种核心注意力变体:自注意力用于建立序列内部的全局关联,交叉注意力连接编码器与解码器的信息,而因果自注意力则确保自回归生成的

weixin_29094775的博客 410

C# WinForm上位机:从串口调试工具到智能温控系统(Modbus RTU协议实战+完整源码)

做工业上位机开发时,我们常从串口调试工具入手:验证设备通信、查看数据帧,但面对实际场景(比如温控、电机控制),单纯的“收发数据”远远不够——需要解析工业标准协议(如Modbus RTU)、实时监控关键指标、实现自动化控制逻辑,还要有稳定的UI交互和数据记录。串口调试工具能收发数据,但看不懂Modbus RTU帧(地址、功能码、寄存器、CRC校验);想控制温控设备(如加热器、风扇),但不知道如何通过Modbus写入控制指令;手动调节目标温度时,温度波动大,需要PID算法实现精准控温,但不会集成;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1302

LeetCode 12. Integer to Roman, 整数转罗马数字 ,C#

前言 本文介绍了 LeetCode 第 12 题 , “Integer to Roman”, 也就是 “整数转罗马数字” 的问题. 本文使用 C# 语言完成题目。 题目 English LeetCode 12. Integer to Roman Roman numerals are represented by seven different symbols: I, V, X, L, C...

wf824284257的博客 763

我用 GPT-5.5 十分钟搞定一篇文献综述!附全流程指南

每一个框架中提出的逻辑链接,都必须至少有一篇提供文本中的文献作为支撑、严格禁止虚构变量、逻辑关系或研究结果、如果某些变量或关系在文本中未提及,必须明确声明“在提供的文本中未找到相关信息”、引用格式必须严格遵循原文提供的“作者/年份”格式,例如:[Smith, 2022]。各位同仁好,我是七哥。扫描提供的文献摘要,识别存在冲突的结果或理论、分析这些文献之间的差异,并总结可能导致差异的原因、输出一个结构化的学术争论段落,清楚呈现文献间的分歧和潜在影响因素、对于缺失或不明确的信息,按约束条件如实标注。

智能AI让学术科研更容易 370

【LeetCode 面试经典150题】12. Integer to Roman 整数转罗马数字

罗马数字通常从左到右书写,且大的符号在前,小的符号在后。因为1在5的前面,所以我们要减去它,得到4。例如,数字2用罗马数字表示为II,即两个1相加。要将整数转换为罗马数字,可以使用贪心算法的思想,从最大的罗马数字开始逐步减去,直到整数为0为止。这个算法的关键思想是尽可能多地使用大的罗马数字来表示整数,以得到最简洁的罗马数字表示。罗马数字由七个不同的符号表示:I、V、X、L、C、D和M。数组,从最大的罗马数字开始向最小的罗马数字遍历。,分别存储罗马数字的整数值和对应的罗马字符。作为整数对应的罗马数字表示。

qq_43513394的博客 1069

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

12.Integer to Roman 整数转罗马数字

题目:Integer to Roman 整数转罗马数字 难度:中等 Roman numerals are represented by seven different symbols:I,V,X,L,C,DandM. Symbol Value I 1 V 5 X 10 L ...

qq_21963133的博客 204

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LeetCode#12 Integer to Roman整数转罗马数字

题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的...

IT圈的01羊的博客 221

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Leetcode12.Integer to Roman整数转罗马数字

罗马数字包含以下七种字符: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。 通常情况下,罗马数字中小的数字在...

Ha12312的博客 173

Leetcode 12 整数转罗马数字 Integer to Roman

罗马数字包含以下七种字符:I,V,X,L,C,D和M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做II,即为两个并列的 1。...

Iridescence 151

LeetCode 12. Integer to Roman 整数转罗马数字

题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的...

it-hao的博客 293

12. Integer to Roman[M]整数转罗马数字

题目 Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. Symol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, two ...

weixin_30321449的博客 66

【LeetCode】#12整数转罗马数字(Integer to Roman)

【LeetCode】#12整数转罗马数字(Integer to Roman) 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...

weixin_43858604的博客 127

12. 整数转罗马数字(javascript)Integer to Roman

12. 整数转罗马数字(javascript)Integer to Roman

ingenuou_的博客 630

LeetCode 12 — Integer to Roman(整数转罗马数字)

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D ...

卓尔货币的博客 455

LeetCode-12:Integer to Roman(整数转罗马数字)

给定一个整数,将其转为罗马数字。

大树先生的博客 1944

LeetCode 12. 整数转罗马数字 Integer to Roman

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的...

Umbrella Corporation 1万+
上一篇: 35. Search Insert Position 搜索插入位置
下一篇: 53. Maximum Subarray最大子数组和
DXB2021
博客等级 码龄5年 307粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值