首页 > 其他分享 >罗马数字转阿拉伯数字

罗马数字转阿拉伯数字

时间:2023-10-15 14:24:04浏览次数:47  
标签:int 阿拉伯数字 current 罗马数字 romanMap result

罗马数字转阿拉伯数字

目录

问题的回答

个人理解

罗马数字不是位置计数,基于对这两篇文章的理解罗马数字技术规则位置计数法可总结为:,而罗马数字是不同数字间的和差运算,不属于位置计数法
缺点:罗马数字没有表示零的数字,同时书写繁难,不能进行数字间的运算,所以广泛性不如阿拉伯数字

基于AI

学号转换

由于学号是八位数超过了一般的4999或3999或9999的条件限制,所以无法使用正常的转换规则来进行转换,所以直接转换行不通,因此可以分开讨论2023和1313,则有MMXXIII和MCCCXIII

但基于AI的答案,似乎直接输出没有一个统一解

程序部分

由于并没有学习完python(但在学习的路上),所以验证程序并没有用python来写,而是选择了熟悉的c++(用到了迭代器的map)

#include<bits/stdc++.h> 
#include <map>
using namespace std;

int romanToInt(string s) {
    map<char, int> romanMap;
    romanMap['I'] = 1;
    romanMap['V'] = 5;
    romanMap['X'] = 10;
    romanMap['L'] = 50;
    romanMap['C'] = 100;
    romanMap['D'] = 500;
    romanMap['M'] = 1000;

    int result = 0;
    int prev = 0;

    for (int i = s.length() - 1; i >= 0; i--) {
        int current = romanMap[s[i]];
        if (current >= prev) {
            result += current;
        } else {
            result -= current;
        }
        prev = current;
    }

    return result;
}

int main() {
    string romanNum;
    cout << "请输入罗马数字: ";
    cin >> romanNum;
    int arabicNum = romanToInt(romanNum);
    cout << "转换为阿拉伯数字: " << arabicNum << endl;

    return 0;
}

标签:int,阿拉伯数字,current,罗马数字,romanMap,result
From: https://www.cnblogs.com/raymongillichmks/p/17765379.html

相关文章

  • 13. 罗马数字转整数
    1.题目介绍罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。12写做XII,即为X+I......
  • 罗马数字转阿拉伯数字
    目录1.罗马数字不是位置计数2.罗马数字的缺点1.有限的表示范围2.不支持零值3.不便于进行运算和计算3.我的八位学号4.PythonandPycharm1.罗马数字不是位置计数罗马数字的符号是独立的,每个符号代表一个特定的数值。例如,"I"代表1,"V"代表5,"X"代表10,等等。这些符号之间没有......
  • 罗马数字转阿拉伯数字
    1.罗马数字不是位置计数法。位置计数法要求存在数位与位值的不同,因而产生进制;罗马数字通过字符变化产生数值改变,不存在固定数位。罗马数字的缺陷:(1)不存在0(2)难以计算,比起位置计数法,罗马数字在加减乘除中计算更繁琐,不便于使用(3)小数是否不好表示?2.学号转罗马数字学号:20231413......
  • LeetCode 13 罗马数字转整数
    LeetCode13罗马数字转整数1.题目地址https://leetcode.cn/problems/roman-to-integer/description/2.题解这道题的解题过程非常简单,具体如下:1.我们需要将罗马数字对应的数,存到一个哈希表中。待用到时,直接使用即可。2.对于正常情况讲(前面......
  • 罗马数字转整数
    罗马数字转整数题目罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。12写做XII,......
  • 》》》java中文数字日期转为阿拉伯数字日期
    转载:java中文数字日期转为阿拉伯数字日期_java中文日期_小灰灰__的博客-CSDN博客Java本身没有内置直接将中文数字日期转换为阿拉伯数字日期的库。你可能需要使用其他方法来实现这个功能。一种常见的方法是通过自定义映射或正则表达式来实现中文数字到阿拉伯数字的转换。下面是......
  • unistr函数将数据库表中的unicode转为字符(\u2161转为罗马数字Ⅱ)
    一、背景在前端页面用户输入罗马数字Ⅱ时,数据存到数据库会转为Unicode编码\u2161,需通过函数重新将Unicode编码转换回去。二、uninstr函数unistr(\xxxx)将Unicode编码转换回原来的形式,因为Unicode是带有u的,即\uxxxx,需要将u给去掉,变成oracle可识别的格式,否则oracle会提示错误。......
  • 阿拉伯数字换算中文
    #region阿拉伯数字换算中文///<summary>///数字转文字(最多2位数)///</summary>///<paramname="numberStr"></param>///<returns></returns>publicstaticstringNumberToChinese(intn......
  • 算法题解之罗马数字智力游戏
    题目描述牛牛和朋友在玩耍时发现了一款关于罗马数字的智力游戏。在这个游戏中,他们首先需要将一个给定的整数num转换为对应的罗马数字。但是,他们发现,当他们每次转换后的结果字符串长度达到了一个阈值limit时,他们需要将字符串反转。请编写一个函数,将给定的整数num转换为对应的......
  • 连续的英文字符和阿拉伯数字不能换行
    原因:这是因为div中,英文字母之间没有空格的话,它会默认认为这是一个英文单词,所以单词就一次输出不换行。解决方法(以IE,chrome,FF为测试浏览器):{word-break:break-all;/*支持IE,chrome,FF不支持*/word-wrap:break-word;/*支持IE,chrome,FF*/}......