LeetCode | Integer to Roman(整数转换成罗马数字)
来源:互联网 发布:机锋论坛淘宝店 编辑:程序博客网 时间:2024/06/05 05:48
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
关于罗马数字的详细表示:罗马数字详解
但是并没有链接中表示的那么复杂,罗马数字只有1,5,10,50,100,500,1000(I,V,X,L,C,D,M)这几个数字,因此,我们可以从大到小遍历,比如2345,2000>1000,得到一个'M',然后变成1345,同样,再减1000,得到"MM",变成345,依次类推即可。
但是对于4,9,40,90,900表示的时候并不是符合规律的表示,其分别为IV,IX,XL,XC等等……
然后再参照是航母的,大于1000时,我们减去1000,并得到一个M以此类推,就能得到想要的结果。
#include <stdio.h>#include <stdlib.h>#include <string.h>void IntegerToRoman(int n);int main(){ int n; while(scanf("%d",&n) == 1){ IntegerToRoman(n); } return 0;}void IntegerToRoman(int n){ if(n < 1 || n > 3999) return; int value[] = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; char *roman[] = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; char store[20] = {0}; int len = sizeof(value)/sizeof(int); for(int i = 0;i < len;++i){ while(n >= value[i]){ n -= value[i]; strcat(store,roman[i]); } } printf("%s\n",store);}
0 0
- LeetCode | Integer to Roman(整数转换成罗马数字)
- LeetCode | Roman to Integer(罗马数字转换成整数)
- leetcode-12. Integer to Roman(整数转换成罗马数字)
- leetcode 13 Roman to Integer(罗马数字转换为整数)
- Integer to Roman 整数转换成罗马数字
- Roman to Integer 罗马数字转换成整数
- Roman to Integer(罗马数字转换成整数)
- Integer to Roman (罗马数字转换) 【leetcode】
- [LeetCode]Integer to Roman整数转罗马数字
- (LeetCode) Roman to Integer --- 罗马数字转整数
- Roman to Integer(罗马数字转换为整数)
- leetcode-13. Roman to Integer(罗马数字转化成整数)
- [C++]LeetCode 12: Integer to Roman(将整数转换为罗马数字)
- LeetCode Roman to Integer(罗马数字转换)
- Roman to Integer 罗马数字转化成整数
- Roman to Integer 罗马数字转化成整数
- Integer to Roman (整数转为罗马数字)
- Integer to Roman (罗马数字转换)
- 反射(reflect)--获取字节码文件中的字段
- Effective C++:条款39:明智而审慎地使用private继承
- Dijkstra 迪杰斯特拉算法
- 斯皮尔曼等级相关性-Spearman Rank Correlation
- JDK动态代理proxy,InvocationHandler
- LeetCode | Integer to Roman(整数转换成罗马数字)
- BeagleBone Black CAN总线读写数据操作
- 反射(reflect)--获取字节码文件中的方法(函数)
- java文件读写操作指定编码格式
- Android Activity应用之 横向屏幕切换
- 1068. Find More Coins
- 【算法题集锦之一】--给定只能排序5个数的方法,找出25个数中的前四个
- 时间管理方法
- 二叉树三种遍历非递归算法