- 問題
Problem 17:Number letter counts
If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?
- 解答例
figure = { 0:"",
1:"one",
2:"two",
3:"three",
4:"four",
5:"five",
6:"six",
7:"seven",
8:"eight",
9:"nine",
10:"ten",
11:"eleven",
12:"twelve",
13:"thirteen",
14:"fourteen",
15:"fifteen",
16:"sixteen",
17:"seventeen",
18:"eighteen",
19:"nineteen",
20:"twenty",
30:"thirty",
40:"forty",
50:"fifty",
60:"sixty",
70:"seventy",
80:"eighty",
90:"ninety",
100:"hundred",
1000:"onethousand"}
def num2wordLen(num):
l = 0
# 1000の処理
if num == 1000:
l += len(figure[1000])
return l
# 100〜999の処理
q100 = num // 100
r100 = num % 100
if(q100 > 0):
l += (len(figure[100]) + len(figure[q100]))
# and処理
if(r100 != 0):
l += 3
# 1〜99の処理
if(r100 < 20):
l += len(figure[r100])
else:
q10 = r100 // 10
r10 = r100 % 10
l += (len(figure[q10 * 10]) + len(figure[r10]))
return l
count = 0
for i in range(1, 1001):
count += num2wordLen(i)
print(count)