一直对古罗马数字感兴趣,借这个题学习了一下,得出
罗马数转阿拉伯数,算法伪代码:
设输入"MCMLIV"为t,设输出数为sum=0,设最大字符数值为m=0
从右往左遍历t中的字符,比较方便
当遍历字符代表的值c大于等于m时,m=c且sum+=c(对应3III等的情况);否则sum减去该值c(对应4IV,9IX等情况)
比如依次VILMCM依次对应+5, -1, +50, +1000, -100, +1000, 得1954
遍历完输出阿拉伯数sum.
==============
阿拉伯数转罗马数,算法:
视罗马数为十进制,每数位有1,2,3,4,5,6,7,8,9共9种符号(无0)
设全进制单位为a(比如I1, X10, C100, M1000),设半进制单位为b(比如V5, L50, D500),
分别对应固定形式表示法:
1 a; 2 aa; 3 aaa; 4 ab; 5 b; 6 ba; 7 baa; 8 baaa; 9 a(a2)
对于数字2016逐数位分解
2千 得 MM
0百 得 无
1十 得X
6得 VI
合并得MMXVI即2016
原理通了代码实现就非常简单了
java 1-999之内的阿拉伯数字变罗马数字!
public static void main(String[] args) { Scanner sc = new Scanner(System.in);int s = Integer.parseInt(sc.next());System.out.println(toRome(s));sc.close();} \/\/ 阿拉伯数字转罗马数字:\/\/ 把所有小数字在前的组合也作为基本数字,再做一个对应的数值表就可以解决问题了。\/\/ I、...
求的值,其中a是一个数字,如2+22+222+2222+22222(此时a=2,n=5),a和...
求的值,其中a是一个数字,如2+22+222+2222+22222(此时a=2,n=5),a和n均由键盘输入。请用#include<stdio.h>main()开头来个大神 做做急啊 匿名 | 浏览1855 次 |举报 我有更好的答案推荐于2017-12-15 14:54:33 最佳答案 \/\/求的值,其中a是一个数字\/\/如2+22+222+2222+22222(此时a=2,n=5),a...
JAVA寂静岭攻略
5、6、2、12、9点的方向点击突起的罗马数字。进入钟移开后出现的洞,一直向前走 ,直到左右同时出现两扇门,进入左边的那个。里面是厨房,调查火炉的门,打开后 发现里面还有干柴。退出厨房,继续前进。见到楼梯后走右边向上的那个,一直往前 ,直到正前方有可以进入的门,进去。调查所有的厕所门,从左边...
office计算机二级,excel常考函数有哪些?
if函数 =IF(AND(F3="是",G3="是",H3="是"),"完成","未完成")这个函数的意思是,如果(同时满足(F3="是",G3="是",H3="是"),那么就是"完成“,否则就是"未完成"。还有一种情况是满足一个条件的,也就是IF(OR(F3="是",G3="是",H3="是"),"完成","未完成")。SUMIFS多条件...