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

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

博客园 - 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.笔者不久将实现代码贴在这里。