惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
云风的 BLOG
云风的 BLOG
小众软件
小众软件
雷峰网
雷峰网
博客园 - 【当耐特】
V
V2EX
WordPress大学
WordPress大学
IT之家
IT之家
Last Week in AI
Last Week in AI
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
The Cloudflare Blog
Jina AI
Jina AI
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

博客园 - Welfare

工作之余[续] A pretty story——登山的故事 ASCII表 推荐一款播放软件——KMPlayer SCJP认证考试<-->12-29[补] 微软主页改版,网易推出搜索 安装系统时出现的问题 比比谁的代码跑得更快!——Intel多核平台代码优化比赛 WEB2.0, 在线网络服务成为Internet时尚 [M$] .NET Framework 3.0及其相关产品正式发布 Sun Java 国际认证学生特惠计划 Imagine Cup 微软全球学生大赛[说明] 瓶子问题 [M$面试题] [推荐]程序员每天该做的事 - Welfare - 博客园 Lava-Lava即将开放源码 大整数运算[Java] 关于++与-- 上帝很公平 ——世界杯的感想 同济大学软件学院院长谈择业—关于嵌入式方向 [ZZ]
罗马数字
Welfare · 2006-10-28 · via 博客园 - Welfare

趣味题目:罗马数字,如果生活在几世纪之前的古罗马,应该用V表示5,V就是所谓的罗马数字。

以下是七个基本的罗马数字与数字的对应:
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000

所有的数都是以上罗马数字组合而成。

例如:17 表示为XVII = X+V+I+I
                                  17  = 10+5+1+1
表示罗马数字可以使用减法来代替加法的规则。例如4不可以使用IIII ,必须使用IV来表示。这样可以简化表示,在例如9用IX表示,而不是VIIII.

右加左减:在一个较大的罗马数字的右边记上一个较小的罗马数字,
表示大数字加小数字。在一个较大的数字的左边记上一个较小的罗
马数字,表示大数字减小数字。但是,左减不能跨越等级。
比如,99不可以用IC表示,用XCIX表示.

基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个,比如40不能用XXXX,而用XL表示

Problem 1.
设计一个函数,将100(包括100)以内的整数转换成罗马数字,超过100不考虑
int itor(int n,char* buf,int bufLength)
其中,n是要转换的整数,buf是要输出的字符串,bufLength是buf的字符长度
成功,返回0,否则,返回 -1;

比如:
char buf[256];
result = itor(n,buf,sizeof(buf));

when n = 28; result = 0, 输出"XXVIII";
when n = 72; result = 0, 输出"LXXII";

Problem 2:
写一个程序,实现以下功能:读入在一行的两个罗马数字(最后一行以#结束),求着这两个数的差,结果必须是罗马数字表示。如果答案为零,输出ZERO.
例如:输入:MM II
            输出:MCMXCVIII

P.S.笔者不久将实现代码贴在这里。