计蒜客 整数转换成罗马数字问题

该博客介绍了如何将整数转换为罗马数字,详细解释了输入和输出格式,并提供了C++代码示例。示例输入为123,对应罗马数字CXXIII。文章还阐述了罗马数字的基本符号及其计数规则。
摘要由CSDN通过智能技术生成

问题描述

给定一个整数 num,将整数转换成罗马数字。

如 1,2,3,4,5 对应的罗马数字分别为I,II,III,IV,V等,更详细的说明见此 链接

输入格式

第一行输入一个整 num(1≤num≤3999)。

输出格式

输出 num对应的罗马数字。

样例输入

123

样例输出

CXXIII

C++代码示例

#include <iostream>
#include <malloc.h>
#include <string>

using namespace std;
/*
"%"是取余运算,只用用于整形操作数,表达式a%b的结果是a被b除的余数。
"%"的优先级与"/"相同,因此从左到右执行。
当"/"用于两个整形数据相除时,其结果取商的整数部分,小数部分被自动舍弃,因此,表达式1/2的结果是0,需要特别注意。
*/
string intToRoman(int num)
{
    char* c[4][10]={
        {"","I","II","III","IV","V","VI","VII","VIII","IX"},//0,1,2,3,4,5,6,7,8,9
        {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},//00,10,20,30,40,50,60,70,80,90
        {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},//000,100,200,300,400,500,600,700,800,900
        {"","M","MM","MMM"}//0000,1000,2000,3000
    };
    string roman;
    roman.append(c[3][num / 1000 % 10]);
    roman.append(c[2][num / 100 % 10]);
    roman.append(c[1][num / 10 % 10]);
    roman.append(c[0][num % 10]);

    return roman;
}

int main()
{
    int num;
    cin>>num;
    cout<<intToRoman(num);
    return 0;
}

补充

罗马数字的计数方式

  • 罗马数字中没有”0”的表示,这里用空格来表示十进制的”0”
  • 罗马数字就有下面七个基本符号:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、 M(1000)
  • 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
  • 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
  • 小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
  • 正常使用时、连写的数字重复不得超过三次;
  • 在一个数的上面画一条横线、表示这个数扩大 1000 倍。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值