题目名称 | 683. 序言页码 |
---|---|
输入输出 | preface.in/out |
难度等级 | ★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 8 |
题目来源 | Makazeu 于2012-03-30加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:60, 提交:104, 通过率:57.69% | ||||
lihaoze | 100 | 0.000 s | 0.00 MiB | C++ |
FoolMike | 100 | 0.001 s | 0.17 MiB | Pascal |
FoolMike | 100 | 0.001 s | 0.17 MiB | Pascal |
ConanQZ | 100 | 0.001 s | 0.17 MiB | Pascal |
wfff | 100 | 0.001 s | 0.31 MiB | C++ |
筽邝 | 100 | 0.002 s | 0.17 MiB | Pascal |
隨風巽 | 100 | 0.002 s | 0.29 MiB | C++ |
再见 | 100 | 0.002 s | 0.29 MiB | C++ |
cstdio | 100 | 0.002 s | 0.31 MiB | C++ |
chs | 100 | 0.002 s | 0.31 MiB | C++ |
关于 序言页码 的近10条评论(全部评论) | ||||
---|---|---|---|---|
同样是打表,大神(cstdio)和智障(窝)的差距咋就这么大呢?
| ||||
跪了一遍……原因是手残把语言选成C了……
| ||||
哎~简单但写着麻烦,稍不留神就写错啦!
hello!
2012-07-24 08:34
2楼
| ||||
无力吐槽
|
一类书的序言是以罗马数字标页码的。传统罗马数字用单个字母表示特定的数值,以下是标准数字表:
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
有时,一个可表示为10n的数出现在一个比它大1级或2级的数前(I在V或X前面,X在L或C前面,等等)。在这种情况下,数值等于后面的那个数减去前面的那个数:
IV = 4 IX = 9 XL = 40
一个数 用罗马数字来表示 有且仅有一种 而且不能复合嵌套使用(比如I是1 X是10 有人可能要说 IXL就能表示50-10-1 但是IXL绝对不能用来表达39 ) (那么39用什么来表示呢 XXXIX是唯一 而且正确的选择- -)
像XD, IC, 和XM这样的表达是非法的,因为前面的数比后面的数小太多。对于XD(490的错误表达),可以写成 CDXC; 对于IC(99的错误表达),可以写成XCIX; 对于XM(990的错误表达),可以写成CMXC。 90 写成 XC 而不是 LXL, 因为 L 后面的 X 意味着后继标记是 X 或者更小 (不管怎样,可能吧).
给定N(1 <= N < 3,500), 序言的页码数,请统计在第1页到第N页中,有几个I出现,几个V出现,等等 (从小到大的顺序)。不要输出没有出现过的字符。
比如N = 5, 那么页码数为: I, II, III, IV, V. 总共有7个I出现,2个V出现。
一个整数N。
每行一个字符和一个数字k,表示这个字符出现了k次。字符必须按数字表中的递增顺序输出。
5
I 7 V 2