【备战秋招】每日一题:华东师范大学保研机试-2022-罗马数字

news2024/11/27 9:58:22

为了更好的阅读体检,可以查看我的算法学习博客罗马数字

题目内容

罗马数字是古罗马使用的记数系统,现今仍很常见。

罗马数字有七个基本符号: I,V,X,L,C,D,M。

罗马数字IVXLCDM
对应的阿拉伯数字1510501005001000

需要注意的是罗马数字与十进位数字的意义不同,它没有表示零的数字,与进位制无关。按照下述的规则可以表示任意正整 数。

“标准”形式

重复次数:一个罗马数字重复几次,就表示这个数的几倍。

右加左减:

  • 1.在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。

  • 2.在较大的罗马数字的左边记上较小的罗马数字,表示大数字减小数字。

  • 3.左减的数字有限制,仅限于I,X,C.例如45表示XLV,而不是VL

  • 4.左减时不可跨越一个位值。例如,99是XCIX

  • ([100- 10]+ [10- 1]),而不是IC ([100 - 1])。等同于阿拉伯数字每位数字分别表示。

  • 5.左减数字必须为一位,比如8是VIII,而不用IIX

  • 6.罗马数字V,L,D中的任何一个放在较大的罗马数字右边只能使用一个。

  • 7.右加连续相同数字不超过三位,比如14是XIV,而不是XIIII

现在给出一个阿拉伯数字表示的十进制正整数,输出其对应的罗马数字。

输入格式

一行十进制整数(1 \leq n \leq 1000)

输出格式

一行字符串,表示对应的罗马数字

样例

input

3

output

III

思路

这题最主要的难点就是规则繁杂。最快的理解规则方式是,先把1−101−10 都表示出来!

十进制12345678910
罗马数字IIIIIIIVVVIVIIVIIIIXX

根据条件7,1,2,31,2,3 一定是 I,II,III

对于4,根据条件7,不能是IIII,所以根据条件2得到:IV. 对于9是同理的

I II III IV V VI VII VIII IX X

我们发现这样的规律很容易推广到10,20,...,100 与 100 , 200 , 300 , ... , 1000

十进制102030405060708090100
罗马数字XXXXXXXLLLXLXXLXXXXCC
十进制1002003004005006007008009001000
罗马数字CCCCCCCDDDCDCCDCCCCMM

有上面三张表,我们就可以表示出[1,1000] 内的任何一个数。只需要拆分十进制位即可。

例如:338=300+30+8。所以是CCCXXXVIII

实现

1.存表

2.将读入的数十进制拆分

3.查表输出

代码:

#include<bits/stdc++.h>
using namespace std;
string a[10000];
int main()
{
    a[1] = "I";
    a[2] = "II";
    a[3] = "III";
    a[4] = "IV";
    a[5] = "V";
    a[6] = "VI";
    a[7] = "VII";
    a[8] = "VIII";
    a[9] = "IX";
    a[10] = "X";
    a[20] = "XX";
    a[30] = "XXX";
    a[40] = "XL";
    a[50] = "L";
    a[60] = "LX";
    a[70] = "LXX";
    a[80] = "LXXX";
    a[90] = "XC";
    a[100] = "C";
    a[200] = "CC";
    a[300] = "CCC";
    a[400] = "CD";
    a[500] = "D";
    a[600] = "DC";
    a[700] = "DCC";
    a[800] = "DCCC";
    a[900] = "CM";
    a[1000] = "M";
    int n;
    cin >> n;
    int x = n % 10;
    n -= x;
    int y = n % 100;
    n -= y;
    int z = n;
    cout << a[z] + a[y] + a[x] << endl;
    return 0;
}

思路

这题最主要的难点就是规则繁杂。最快的理解规则方式是,先把1−101−10 都表示出来!

十进制12345678910
罗马数字IIIIIIIVVVIVIIVIIIIXX

根据条件7,1,2,31,2,3 一定是 I,II,III

对于4,根据条件7,不能是IIII,所以根据条件2得到:IV. 对于9是同理的

I II III IV V V I VII VIII IX X

我们发现这样的规律很容易推广到10,20,...,100 与 100 , 200 , 300 , ... , 1000

十进制102030405060708090100
罗马数字XXXXXXXLLLXLXXLXXXXCC
十进制1002003004005006007008009001000
罗马数字CCCCCCCDDDCDCCDCCCCMM

有上面三张表,我们就可以表示出[1,1000] 内的任何一个数。只需要拆分十进制位即可。

例如:338=300+30+8338=300+30+8。所以是

CCCXXXVIII

实现

1.存表

2.将读入的数十进制拆分

3.查表输出

代码:

#include<bits/stdc++.h>
using namespace std;
string a[10000];
int main()
{
    a[1] = "I";
    a[2] = "II";
    a[3] = "III";
    a[4] = "IV";
    a[5] = "V";
    a[6] = "VI";
    a[7] = "VII";
    a[8] = "VIII";
    a[9] = "IX";
    a[10] = "X";
    a[20] = "XX";
    a[30] = "XXX";
    a[40] = "XL";
    a[50] = "L";
    a[60] = "LX";
    a[70] = "LXX";
    a[80] = "LXXX";
    a[90] = "XC";
    a[100] = "C";
    a[200] = "CC";
    a[300] = "CCC";
    a[400] = "CD";
    a[500] = "D";
    a[600] = "DC";
    a[700] = "DCC";
    a[800] = "DCCC";
    a[900] = "CM";
    a[1000] = "M";
    int n;
    cin >> n;
    int x = n % 10;
    n -= x;
    int y = n % 100;
    n -= y;
    int z = n;
    cout << a[z] + a[y] + a[x] << endl;
    return 0;
}

总结

评价

一道简单的模拟题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/665118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python拆分语句,让数据处理更有效率

Python 拆分语句&#xff0c;让数据处理更有效率 Python是一种强大的编程语言&#xff0c;不仅支持各种应用开发&#xff0c;而且非常适合数据处理。Python的易用性和灵活性使其成为了数据科学家和工程师首选的编程语言之一。Python的字符串拆分功能能够轻松处理数据的分割和组…

从C语言到C++_20(仿函数+优先级队列priority_queue的模拟实现+反向迭代器)

目录 1. priority_queue的模拟实现 1.1 未完全的priority_queue 1.2 迭代器区间构造和无参构造 1.3 仿函数的介绍和使用 1.4 完整priority_queue代码&#xff1a; 1.5 相关笔试选择题 答案&#xff1a; 2. 反向迭代器 2.1 反向迭代器的普通实现 reverse_iterator.h&a…

性能测试基础知识(一)性能测试策略

性能测试策略 一、什么是性能测试&#xff1f;二、性能测试的目的三、性能测试策略1、基准测试2、并发测试3、负载测试4、压力测试5、其他测试 一、什么是性能测试&#xff1f; 性能测试是在一定的负载1条件下&#xff0c;系统的响应时间等特性是否满足特定的性能需求。需要有…

软考A计划-系统集成项目管理工程师-信息化知识(二)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

【高危】Apache Nifi JMS组件存在JNDI反序列化漏洞

漏洞描述 Apache NiFi 是一个开源的数据流处理和自动化工具&#xff0c; JndiJmsConnectionFactoryProvider 控制器组件用于配置 JMS 连接地址。 Apache NiFi 1.8.0 至 1.21.0 版本中&#xff0c;由于 JndiJmsConnectionFactoryProvider 控制器服务允许已授权的用户配置 URL…

NUCLEO-F411RE RT-Thread 体验 (3) - GCC环境 uart驱动的移植以及console的使用

NUCLEO-F411RE RT-Thread 体验 (3) - GCC环境 uart驱动的移植以及console的使用 1、准备工作 在第一节里&#xff0c;我们用stm32cubemx将pa2 pa3管脚配置成usart2&#xff0c;用于跟st-link虚拟串口的打印用&#xff0c;那么我们先重定向printf函数&#xff0c;看这条通道是…

创建 Python 脚本以在 Linux 中打开新终端并运行命令

文章目录 创建在 Linux 中打开新终端并运行命令的 Python 脚本在 Linux 中创建 Python 脚本来检查 Python 版本使打开的终端保持活动状态并在其中运行命令的 Python 脚本在 Linux 中使用 Python 子模块 subprocess() 将命令传递到新终端总结 Linux 操作系统以其程序员广泛使用的…

PB9如何实现datawindow打印导出PDF,PB导出PDF

PB9如何实现datawindow打印导出PDF&#xff0c;PB导出PDF&#xff1f; 之前的saveas导出pdf&#xff0c;设置非常麻烦。需要 1. 安装gs705w32.exe 2. 安装虚拟打印机 Sybase\Shared\PowerBuilder\drivers\ADIST5.INF 手动添加打印机 这个方法现在对于win64不支持。 今天客…

window11 + python3.7+NVDIA11.7 +pytorch GPU 加速环境配置

window11 python3.7NVDIA11.7 pytorchGPU 加速环境配置 关于pytorch配置GPU环境我在网上看了很多&#xff0c;其实现在基本上没有windows 11 版本环境的配置但是其实没必要担心这个&#xff0c;这没有影响。 对于博主呢&#xff0c;其实不太像配置GPU的&#xff0c;因为其实…

【MYSQL篇】一文弄懂mysql索引原理

文章目录 索引是什么&#xff1f;索引定义索引类型 索引存储模型推演二分查找二叉查找树&#xff08; Binary Search Tree&#xff09;平衡二叉树&#xff08;AVL Tree&#xff09;多路平衡查找树&#xff08;B Tree&#xff09;B树&#xff08;加强版B Tree&#xff09; 小结 …

PyQt中数据库的访问(一)

访问数据库的第一步是确保ODBC数据源配置成功&#xff0c;我接下来会写数据源配置的文章&#xff0c;请继续关注本栏&#xff01; &#xff08;一&#xff09;数据库连接 self.DBQSqlDatabase.addDatabase("QODBC") self.DB.setDatabaseName("Driver{sqlServer…

shell 实现子进程多任务,进程高并发

多进程的作用 提高程序的效率&#xff1a;一些CPU密集型的任务&#xff0c;如数据处理、解压、加密等&#xff0c;使用多进程可以提高程序的执行效率&#xff0c;更快地完成计算任务&#xff1b; 实现更复杂的功能&#xff1a;多进程可以在同一时间向不同的方向处理不同的任务…

SpringBoot创建和运行

1、什么是SpringBoot1.1、优点 2、项目创建2.1、使用Idea创建2.2、使用网页创建 3、项目目录介绍4、项目运行5、包路径错误 1、什么是SpringBoot Spring是为了简化Java程序开发的。Spring Boot是一种用于快速构建独立、生产级别的Java应用程序的开源框架&#xff0c;是为了简化…

MySQL优化--undo log和redo log的区别

首先我们需要知道两个概念 缓冲池&#xff08;buffer pool&#xff09;:主内存中的一个区域&#xff0c;里面可以缓存磁盘上经常操作的真实数据&#xff0c;在执行增删改查操作时&#xff0c;先操作缓冲池中的数据&#xff08;若缓冲池没有数据&#xff0c;则从磁盘加载并缓存…

MySQL数据库基础 13

第十三章 约束 1. 约束(constraint)概述1.1 为什么需要约束1.2 什么是约束1.3 约束的分类 2. 非空约束2.1 作用2.2 关键字2.3 特点2.4 添加非空约束2.5 删除非空约束 3. 唯一性约束3.1 作用3.2 关键字3.3 特点3.4 添加唯一约束3.5 关于复合唯一约束3.5 删除唯一约束 4. PRIMARY…

燃气管网监测系统助力天燃气管道安全运行

随着城市化的进程&#xff0c;燃气管道网络在各个城市中越来越密集&#xff0c;一旦发生燃气泄漏等安全事故&#xff0c;后果将不堪设想。因此&#xff0c;城市燃气管网的建设发展有赖于制定一个安全可靠的监控方案&#xff0c;以保障供气管道与用户安全。物联网技术的发展为城…

北邮国院物联网RFID课程笔记

PDF 获取&#xff1a;微信公众号&#xff1a;灰海宽松&#xff0c;后台回复 “RFID” 获取。 文章目录 RFID1. IntroductionComparison of different automatic identification technologiesThe main features of RFIDConstraints of RFID technologyCore technologies of RFI…

一个cad绘图图型的过程

cad绘图步骤 &#xff1a; 1.设置绘图环境。 选择菜单栏中的“格式”→“图层”命令&#xff0c;新建 3 个图层&#xff1a; 第一图层命名为“粗实线”&#xff0c;线宽为 0.3mm&#xff0c;其余属性默认。 第二图层命名为“细实线”&#xff0c;线宽为 0.15mm&#xff0c;其…

计算机网络开荒5-数据链路层

文章目录 一、 数据链路层服务二、链路层具体实现三、差错检测3.1 差错编码3.2 奇偶校验吗3.3 Internet校验和checksum3.4 循环冗余校验码CRC 四、多路访问控制MAC协议4.1 理想的MAC协议4.2 MAC协议分类4.2.1 TDMA4.2.2 FDMA 4.3 随机访问控制协议4.3.1 时隙ALOHA协议4.3.2 ALO…

chatgpt赋能python:Python拆数指南:如何使用Python快速拆解数字

Python拆数指南&#xff1a;如何使用Python快速拆解数字 如果您正在开发一个关于数字的应用程序&#xff0c;那么您会发现Python可以非常方便地拆解数字。Python的拆数功能可以快速拆解数字并将其转换为可读的形式&#xff0c;这对于数据处理和编程任务来说非常有用。 Python…