Viết một thuật toán để giải thích một chuỗi các chữ cái là một chữ số La Mã. (xem quy tắc số La Mã dưới đây)
Mỗi chữ cái riêng biệt có một giá trị thập phân Ả Rập phù hợp, không có tối đa. Nhưng bạn không có chìa khóa trước, do đó, {A=10, I=1, X=5, ... Z=1000000}được quyết định bởi sự giải thích của bạn.
Thử thách
- Đọc đầu vào qua
STDINhoặc tương đương và ghi đầu ra quaSTDOUThoặc tương đương - Đầu vào hợp lệ là sự kết hợp của chữ hoa và chữ thường tức là khớp
\[a-zA-Z]+\ - Đầu vào phải được xác thực để xem chuỗi ký tự có thể được hiểu là số La Mã hợp lệ
- Nếu đầu vào vượt qua xác thực, đầu ra hợp lệ phải là giải thích thập phân tiếng Ả Rập thấp nhất và khóa được sử dụng tức
Aalà được hiểu là4 {a=5, A=1}không6 {A=5, a=1}hoặc9 {a=10, a=1}
Quy tắc số La Mã
Chỉ các chữ cái đại diện cho sức mạnh của mười có thể được lặp lại, tối đa ba lần liên tiếp và tổng cộng bốn lần, ví dụ
IIIIIXXXIXNếu một hoặc nhiều chữ cái được đặt sau một chữ cái khác có giá trị lớn hơn, hãy thêm số tiền đó
AAaa => 22 {A=10, a=1} (20 + 2 = 22) bbAAaa => 222 {b=100, A=10, a=1} (200 + 20 + 2 = 222)Nếu một chữ cái được đặt trước một chữ cái khác có giá trị lớn hơn, hãy trừ đi số tiền đó
Aa => 4 {a=5, A=1} (5 – 1 = 4) AaA => 19 {A=10, a=1} (10 + 10 – 1 = 19) BbBaA => 194 {B=100, b=10, A=5, a=1} (100 + 100 - 10 + 5 - 1 = 194)Một số quy tắc được áp dụng để trừ số tiền từ chữ số La Mã:
- Chỉ trừ đi sức mạnh của mười tức là
1, 10, 100...không5, 50, 500... - Không có phép trừ kép do đó
18được viết làXVIIIkhôngIIXX (10 + 10 - 1 - 1) - Đừng trừ một số lớn hơn một số lớn hơn mười lần.
Bạn có thể trừ1từ5hay10nhưng không từ50, 100, 500...
- Chỉ trừ đi sức mạnh của mười tức là
Thí dụ
Input:
Aa
BAa
CCCXLVII
MMMCDVII
ABADDF
XVVX
FAASGSH
DXCCDA
AaBbcDEf
Output:
4 {a=5, A=1}
14 {B=10, a=5, A=1}
347 {C=100, L=50, X=10, V=5, I=1}
347 {M=100, D=50, C=10, V=5, I=1}
1921 {A=1000, B=100, D=10, F=1}
'XVVX' failed Roman numeral test
7191 {F=5000, A=1000, S=100, G=10, H=1}
'DXCCDA' failed Roman numeral test
4444 {a=5000, A=1000, b=500, B=100, D=50, c=10, f=5, E=1}
Aacó giá trị là 1 (A = 1, a = 2).