Integer to Roman
来源:互联网 发布:网络监控数据线连接 编辑:程序博客网 时间:2024/06/14 00:12
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
把阿拉伯数字变换成罗马数字,下面先简述一下罗马数字的规则
基本字符
I V X L C D M
相应的阿拉伯数字表示为
1 5 10 50 100 500 1000
1、相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
2、小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
3、小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
4、正常使用时、连写的数字重复不得超过三次;
#include<math.h>class Solution {public: string intToRoman(int num) { string ans=""; string a, b, c; int temp = num; int each[4]; int i = 0; while(i < 4){ each[i] = temp/pow(10,3-i); temp = temp % int(pow(10,3-i)); i++; } for(int i = 0; i < each[0]; i++){ ans += "M"; } for(int j = 1; j < 4; j++){ if(j == 1){ a = "C"; b = "D"; c = "M"; } else if (j == 2){ a = "X"; b = "L"; c = "C"; } else{ a = "I"; b = "V"; c = "X"; } if(each[j] <= 3){ for(int i = 0; i < each[j]; i++){ ans += a; } } else if(each[j] == 4){ ans += a; ans += b; } else if(each[j] >= 5 && each[j] <= 8){ ans += b; for(int i = 5; i < each[j]; i++){ ans += a; } } else if(each[j] == 9) { ans += a; ans += c; } } return ans; }};
由于题目给了int的范围(1 < num < 3999),我的思路是先得出四个数字,比如说3999,就是3,9,9,9。一个数字一个数字来分析,第一个数字最大只能是3,所以就根据其大小,输出多少个M,第一个数字为几,就输出几个M。
第二个数字到第四个数字的范围都是0 - 9,所以用abc来代表IVXLCDM等,第二个数字的abc为CDM,第三个数字的abc为XLC,第四个数字的abc为IVX。当数字范围在0-3时,数字为几就输出几个a,当数字范围为4时,就输出ab;当数字范围为5-8时,先输出b,然后该数减去5等于几,就输出几个a,当数字等于9时,就输出ac。
看了一下,这种方法耗时并不短,还不如那些直接打表的快......这就很难受了。
阅读全文
0 0
- Integer to Roman & Roman to Integer
- Integer to Roman & Roman to Integer
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- Integer to Roman and Roman to Integer
- LeetCode Integer to Roman & Roman to Integer
- Roman to Integer/Integer to Roman
- leetcode - roman to integer & integer to roman
- "Roman to Integer" and "Integer to Roman"
- Roman to Integer &&Integer to Roman
- Roman to Integer and Integer to Roman
- Roman to Integer/Integer to Roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- 插入排序java
- keccak算法及实现
- malloc函数的学习
- linux鸟哥视频学习笔记03
- 什么是集群
- Integer to Roman
- 深度学习框架---keras的层次示意图---方便直观理解---适用sklearn模型的展示
- 百度地图API使用到的几个方法总结
- 考试总结18
- C语言中的随机数生成器
- 菱形继承--菱形虚拟继承
- 2017 ICPC BeiJing Regional Hihocoder 1634 Puzzle Game
- java 第三章 运算符,表达式和语句
- MT9M031/OV7251 usb 3.0 & mipi bridge