Preface Numbering
preface
Algorithm
Generate all the roman numerals and count the occurences of each letter.
Python
numerals = ['I','V','X','L','C','D','M']
lt = [[1000,'M'],[900,'CM'],[500,'D'],[400,'CD'],[100,'C'],[90,'XC'],[50,'L'],[40,'XL'],[10,'X'],[9,'IX'],[5,'V'],[4,'IV'],[1,'I']]
def conv(num):
global numerals, lt
s = ''
for i in lt:
s += i[1]*(num//i[0])
num = num%i[0]
res = []
for i in numerals:
res.append(s.count(i))
return res
def main():
global numerals
with open('preface.in','r') as fIn:
num = int(fIn.read())
res = [0]*7
for i in range(1,num+1):
res = [sum(k) for k in zip(res, conv(i))]
for i in range(6,-1,-1):
if res[i] != 0: break
res.pop(i)
with open('preface.out','w') as fOut:
for i in range(len(res)):
fOut.write('%s %d\n' %(numerals[i],res[i]))
if __name__ == '__main__': main()