BNU4062:0123456789
来源:互联网 发布:公司网络 迅雷赚钱宝 编辑:程序博客网 时间:2024/05/22 08:11
罗马数字是欧洲在阿拉伯数字(实际上是印度数字)传入之前使用的一种数码,现在应用较少.它的产生晚于中国甲骨文中的数码,更晚于埃及人的十进位数字.但是,它的产生标志着一种古代文明的进步.
罗马数字用7个拉丁字母IVXLCDM和组数规则来表示数.
I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000
组数规则有以下一些
最多3个可以表示为10n的数字(I,X,C,M)可以连续放在一起,表示它们的和: II=2,CC=200,III=3,CCC=300
可表示为5*10n的字符(V,L,D)从不连续出现。
字符一般以值递减的顺序接连出现:
CCLXVIII = 100+100+50+10+5+1+1+1 = 268
但也有例外,有时,一个可表示为10n的数出现在一个比它大的数前.在这种情况下,数值等于后面的那个数减去前面的那个数:
IV = 4
IX = 9
XL = 40
不过,像XD,IC和XM这样的表达是非法的,因为前面的数比后面的数小太多,每一个用来做减去的数字必须保证他后面紧跟着的数字不超过它的10倍.对于XD(490的错误表达),应该写成 CDXC;对于IC(99的错误表达),可以写成XCIX;对于XM(990的错误表达),应该写成CMXC.
现在要求你编写程序把实现阿拉伯数字到罗马数字的转换.
Input
输入文件包含多组测试数据,每组测试数据一行,给出一个阿拉伯数字表示下的正整数,该数不超过3000.
Output
对于每一组测试数据,对应输出一行,为阿拉伯数字表示.
Sample Input
512
Sample Output
DXII
其实只要掌握罗马数字的规律就很简单了。。简单模拟
#include <stdio.h>#include <string.h>int main(){ int n,i,t; while(~scanf("%d",&n)) { if(n>=1000) { t=n/1000; n=n-t*1000; while(t--) printf("M"); } if(n>=100) { t=n/100; n=n-t*100; if(t<=3) while(t--) printf("C"); else if(t==4) printf("CD"); else if(t<9) { printf("D"); t-=5; while(t--) printf("C"); } else if(t==9) printf("CM"); } if(n>=10) { t=n/10; n=n-t*10; if(t<=3) while(t--) printf("X"); else if(t==4) printf("XL"); else if(t<9) { printf("L"); t-=5; while(t--) printf("X"); } else if(t==9) printf("XC"); } if(n<10) { if(n<=3) while(n--) printf("I"); else if(n==4) printf("IV"); else if(n<9) { printf("V"); n-=5; while(n--) printf("I"); } else if(n==9) printf("IX"); } printf("\n"); } return 0;}
0 0
- BNU4062:0123456789
- 0123456789ABCDEF”[0]
- BNU 4062 0123456789
- "0123456789"[5]这是个什么玩意儿?
- 把字符串中的全角数字替换成半角数字 0123456789 转换成 0123456789
- 一个0123456789的测试,大家来玩一把!
- Failed to install MyApp.apk on device '0123456789ABCDEF': timeout
- 0123456789ABCDEF”[0]转换为16进制数的说明
- “boolean b=("0123456789".indexOf(e.text)>=0); ”简析
- 笔试题:输入0123456789对应输出“一二三四五六七八九”
- 最大似然分类法
- poj_3041
- 14年春面试前准备(二)
- ubuntu 12.04 独立显卡切换
- 启用SQL*Plus的AutoTrace功能
- BNU4062:0123456789
- Android开发-常用工具方法(dp转成px、网络是否可用、是否3G网络、Gps是否打开、判断手机号码等)
- Spring.Net AOP实例
- 如何让人际关系网助你一臂之力?
- 九度 1012 畅通工程
- 这样的子集最多有几个
- 提高IT项目沟通技巧
- BNU4078:距离判定(点到直线的距离)
- 解决Linux下SQL*Plus命令行历史回调功能