[USACO 2.2.1] Preface Numbering
[题目描述]
Preface Numbering
序言页码
一类书的序言是以罗马数字标页码的。传统罗马数字用单个字母表示特定的数值,一下是标准数字表:
I 1 L 50 M 1000
V 5 C 100
X 10 D 500
最多3个可以表示为10n的数字(I,X,C,M)可以连续放在一起,表示它们的和:
III=3
CCC=300
可表示为5x10n的字符(V,L,D)从不连续出现。
除了下一个规则,一般来说,字符以递减的顺序接连出现:
CCLXVIII = 100+100+50+10+5+1+1+1 = 268
有时,一个可表示为10^n的数出现在一个比它大的数前(I在V或X前面,X在L或C前面,等等)。在这种情况下,数值等于后面的那个数减去前面的那个数:
IV = 4
IX = 9
XL = 40
像XD, IC, 和XM这样的表达是非法的,因为前面的数比后面的数小太多。对于XD(490的错误表达),可以写成 CDXC; 对于IC(99的错误表达),可以写成XCIX; 对于XM(990的错误表达),可以写成CMXC。
给定N(1 <= N < 3,500), 序言的页码数,请统计在第1页到第N也中,有几个I出现,几个V出现,等等 (从小到大的顺序)。不要输出并没有出现过的字符。
比如N = 5, 那么页码数为: I, II, III, IV, V. 总共有7个I出现,2个V出现。
PROGRAM NAME: preface
INPUT FORMAT
一个整数N。
SAMPLE INPUT(preface.in)
5
OUTPUT FORMAT
每行一个字符和一个数字k,表示这个字符出现了k次。字符必须按数字表中的递增顺序输出。
SAMPLE OUTPUT(preface.out)
I 7
V 2
[解题思路]
数字转换。建议先百度一下。
[Code]
{
ID: zane2951
PROG: preface
LANG: PASCAL
}program preface;
constchange:array[1..4,0..9]of string=(('','I','II','III','IV','V','VI','VII','VIII','IX'),('','X','XX','XXX','XL','L','LX','LXX','LXXX','XC'),('','C','CC','CCC','CD','D','DC','DCC','DCCC','CM'),('','M','MM','MMM','','','','','',''));varans:array['A'..'Z'] of longint;n,i:longint;//----------calc-----------
procedure calc(x:longint);
vars:string;ce,t,i:longint;begint:=0;while x>0 dobegininc(t);ce:=x mod 10;x:=x div 10;s:=change[t,ce];for i:=1 to length(s) do inc(ans[s[i]]);end;
end;//----------main-----------
beginassign(input,'preface.in'); reset(input);assign(output,'preface.out'); rewrite(output);readln(n);for i:=1 to n do calc(i);if ans['I']>0 then writeln('I ',ans['I']);if ans['V']>0 then writeln('V ',ans['V']);if ans['X']>0 then writeln('X ',ans['X']);if ans['L']>0 then writeln('L ',ans['L']);if ans['C']>0 then writeln('C ',ans['C']);if ans['D']>0 then writeln('D ',ans['D']);if ans['M']>0 then writeln('M ',ans['M']);close(input); close(output);
end.
[USACO 2.2.1] Preface Numbering相关推荐
- USACO:2.2.1 Preface Numbering 序言页码
USACO:2.2.1 Preface Numbering 序言页码 一.题目描述 ★Preface Numbering 序言页码 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数 ...
- usaco Preface Numbering 序言页码
Preface Numbering 序言页码 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,一下是标准数字 表: I 1 L 50 M 1000 V 5 C 100 X 10 ...
- preface numbering
1262. [USACO题库]2.2.1 Preface Numbering序言页码 (Standard IO) 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 题目 ...
- USACO Section2.2 Preface Numbering 解题报告 【icedream61】
preface解题报告 ---------------------------------------------------------------------------------------- ...
- P1465 序言页码 Preface Numbering (手推)
题目描述 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 V 5 X 10 L 50 C 100 D 500 M 1000 最多3个同样的可以表示为 ...
- USACO-Section2.2 Preface Numbering
2017-8-30 题目描述 序言的页码数,请统计在第1页到第N页中,有几个I出现,几个V出现... 解答 将已知存起来,不再重复计算,没有求的用已经求好的加起来 代码 /* ID: 18795871 ...
- Preface Numbering序言页码
题面 (preface.pas/c/cpp) 一类书的序言是以罗马数字标页码的.传统罗马数字用单个字母表示特定的数值,以下是标准数字表: I 1 V 5 X 10 L 50 C 100 D 500 M ...
- 洛谷P1465 [USACO2.2]序言页码 Preface Numbering
题目描述 给定 nn,求 1 \sim n1∼n 的 罗马数字 表示中,各个字符出现了多少次. 比如 n = 5n=5,表示为 I, II, III, IV, V.总共有 77 个 I 出现,22 个 ...
- SAX错误–序言中不允许包含内容
问题 通过SAX解析器工作的XML,但是当它解析某些XML文件时,会提示以下错误消息: org.xml.sax.SAXParseException: Content is not allowed in ...
最新文章
- 构建一个react项目_您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩。...
- 抢占式优先权调度算法
- java精确浮点型小数,java练习 计算n位可被浮点数精确表示的小数
- 利用SQL索引提高查询速度
- redis系列之数据库与缓存数据一致性解决方案
- 最小生成树基础算法(Prim + Krustal)
- 华为开源深度学习框架MindSpore背后的商业野心
- 过滤被7整除或者包含7的数子
- VC/MFC列表CListCtrl类的LVCOLUMN和LVITEM详解
- [jQuery] 你知道自定义事件吗?jQuery里的fire函数是什么意思,什么时候用?
- mac下使用mysql
- android:异步任务asyncTask介绍及异步任务下载图片(带进度条)
- Android3dtouch xposed,乐2 MIUI10 8.10.26增强版 主题和谐 黑域 3Dtouch 分屏 Gay设置-刷机之家...
- Windows软件打包方法
- MD5加密解密网站测试,MD5加密还安全吗?
- Secondary Maps (Detail Maps) Detail Mask 二级贴图(细节贴图)细节遮罩 Standard Shader系列14
- 全国各地知名互联网公司内推QQ群
- No qualifying bean of type ‘service‘ available:单元测试报错
- vim制作python3编辑器
- Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)