#P17045. [NWERC 2021] IXth Problem
[NWERC 2021] IXth Problem
背景
译自 Northwestern Europe Regional Contest (NWERC) 2021 Problem I。
原题许可协议为 CC BY-SA。
题目描述
Emily 最近在学校学习了罗马帝国及其文明。其中一个尤其令她着迷的方面是他们使用的数字系统:罗马数字。罗马数字系统使用七种不同的数字符号,每种符号表示一个不同的值,并用一个字母表示:I 表示 ,V 表示 ,X 表示 ,L 表示 ,C 表示 ,D 表示 ,M 表示 。、、 和 的若干倍数按照下表书写:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|
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 |
|||||||
表中大多数数字都是加法形式,也就是把各个符号的值相加。例如,LXX 表示 。然而,第 列和第 列使用所谓的减法记数法,其中 IV 读作 ,IX 读作 ,依此类推。
从 到 的每个数,都写成表中若干项的组合,每一行至多使用一个项,并且从下到上书写。例如, 写作 MMXXI, 写作 DXCIV。注意,在这个数字系统中,无法书写大于 的数;并且减法记数法只能用于上面六种情况(例如 IC 不被认为是合法的罗马数字)。
Emily 在阁楼里找到了一堆旧的 Scrabble 拼字游戏套装。她扔掉了所有不是罗马数字符号的字母牌,并开始用剩下的牌组成罗马数字。只用一张牌组成一个罗马数字当然很容易,但在必须使用所有可用牌的前提下,最少可以组成多少个罗马数字?
输入格式
输入包含:
- 一行七个整数 和 (),分别表示必须使用的
M、D、C、L、X、V和I牌的数量。
保证至少有一张牌,即 。
输出格式
输出一个整数 ,表示在使用输入中所有牌的前提下,能够组成的罗马数字个数的最小值。然后按照下面的格式输出一个最优方案:
- 一个整数 ,表示这个方案中使用了多少种不同的罗马数字。
- 接下来输出 对内容,每对由一个罗马数字和一个正整数组成,表示该罗马数字在方案中使用了多少次。
该方案必须恰好包含总共 个罗马数字,并且必须恰好使用指定数量的每种字母。方案中的 个罗马数字必须互不相同。不需要最小化 。如果存在多个最优方案,可以输出任意一个。
4 1 7 1 3 1 3
2
2
MMDCCCLXX 1
MMCCCXCVIII 1
0 0 0 300 2000 1000 2100
1000
2
XXVIII 700
LXXV 300
提示
【数据规模与约定】
对于所有数据,;;输出中的罗马数字必须是 到 范围内的合法罗马数字。