和进制转换类似,从大到小遍历作为“量词”的1000,100等数,每次用当前数处以这些量词,商就是需要重复的次数,并把当前数更新为余数。
比较麻烦的是涉及到9和4时需要在左侧表示,否则用递归可以更短。
最终代码行有五行。
代码长度:177字节 vs. 全站第一:124字节。
import sys
for a in map(int,sys.argv[1:]):
r=""
for i,j in zip([1000,900,500,400,100,90,50,40,10,9,5,4,1],"M CM D CD C XC L XL X IX V IV I".split()):r+=j*(a//i);a%=i
print(r)
|