当前位置: 首页 > news >正文

【整数转罗马数字】

在这里插入图片描述

思路

  1. 计算数字的位数

    • 通过 while(x) 循环计算输入数字 num 的位数 n
  2. 提取各位数字

    • 将数字 num 的每一位分解并存储到 nums 数组中,顺序为从高位到低位。
  3. 罗马数字映射

    • 使用固定数组 Roman 存储罗马数字符号:
      Roman = {'I', 'V', 'X', 'L', 'C', 'D', 'M'}
      
      对应关系:
      • I=1, V=5, X=10, L=50, C=100, D=500, M=1000
  4. 逐位转换

    • 从最高位到最低位依次处理每一位数字:
      • 普通情况(非4、非9)
        • 如果数字 <5,直接累加对应符号(如 3 → III)。
        • 如果数字 ≥5,先加 5 的符号,再加剩余部分(如 7 → V + II = VII)。
      • 特殊情况(4或9)
        • 4 的规则:当前符号 + 下一个符号(如 4 → IV)。
        • 9 的规则:当前符号 + 下两个符号(如 9 → IX)。
  5. 符号索引计算

    • 通过 count(当前位数)计算符号在 Roman 中的索引:
      • 个位:count=1,符号索引 0 (I), 1 (V), 2 (X)
      • 十位:count=2,符号索引 2 (X), 3 (L), 4 (C)
      • 百位:count=3,符号索引 4 (C), 5 (D), 6 (M)
      • 千位:count=4,符号索引 6 (M)
class Solution {
public:string intToRoman(int num) {int n=0;int x=num;string s;char Roman[]={'I','V','X','L','C','D','M'};while(x){   n++;x/=10;}vector<int> nums(n,0);for(int i=n-1;i>=0;i--){nums[i]=num%10;num/=10;}int count=n;for(int i=0;i<n;i++){   if(nums[i]!=4&&nums[i]!=9){if(nums[i]<5) { int cnt=nums[i];while(cnt--){s+=Roman[2*(count-1)];}}else{s+=Roman[2*count-1];int cnt=nums[i]-5;while(cnt--){s+=Roman[2*(count-1)];}}}else if(nums[i]==4){s+=Roman[2*count-2];s+=Roman[2*count-1];}else{s+=Roman[2*count-2];s+=Roman[2*count];}count--;}return s;}
};
http://www.xdnf.cn/news/1231759.html

相关文章:

  • 探索延迟生效变量类:一种灵活的状态管理机制
  • linux进度条程序
  • WD5208S,12V500MA,应用于小家电电源工业控制领域
  • Z20K118库中寄存器及其库函数封装-WDOG库
  • 深入 Go 底层原理(十):defer 的实现与性能开销
  • hcip---ospf知识点总结及实验配置
  • 淘宝获取商品SKU详情API接口操作指南
  • Python爬虫实战:研究SimpleCV技术,构建图像获取及处理系统
  • 注意点:不同对象(更准确地说,不同类型/类)的魔法方法(Magic Methods,也叫特殊方法,以双下划线`__`开头和结尾)通常是不一样的。
  • 字节Seed发布扩散语言模型,推理速度达2146 tokens/s,比同规模自回归快5.4倍
  • 深入 Go 底层原理(三):Goroutine 的调度策略
  • [论文阅读] 人工智能 + 软件工程 | GitHub Marketplace中CI Actions的功能冗余与演化规律研究
  • Text2SQL:如何通过自然语言直接获取数据,打破技术壁垒?
  • 【Android】通知
  • Docker 的网络模式
  • 红黑树(RBTree)
  • 【LeetCode 热题 100】(四)子串
  • 前端-移动Web-day3
  • 云环境K8s集群WebSocket连接失败解决方案
  • 【REACT18.x】使用vite创建的项目无法启动,报错TypeError: crypto.hash is not a function解决方法
  • 基于 LightGBM 的二手车价格预测
  • GaussDB having 的用法
  • 图像加密学习日志————论文学习DAY4
  • 分布式事务----spring操作多个数据库,事务以及事务回滚还有用吗
  • 机械臂的轨迹生成的多种方案
  • Jupyter notebook如何显示行号?
  • MFC 实现托盘图标菜单图标功能
  • NCV8402ASTT1G自保护N沟道功率MOSFET安森美/ONSEMI 过流过温保护汽车级驱动NCV8402ASTT1
  • 从基础功能到自主决策, Agent 开发进阶路怎么走?
  • 【计算机网络】Socket网络编程