本题来自 Project Euler 第17题:https://projecteuler.net/problem=17

'''
Project Euler 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?
NOTE: Do not count spaces or hyphens.
For example, 342 (three hundred and forty-two) contains 23 letters
and 115 (one hundred and fifteen) contains 20 letters.
The use of "and" when writing out numbers is in compliance with British usage. Answer: 21124
''' n1 = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
n2 = ['', 'eleven', 'twelve', 'thirteen','fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
n3 = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'] sum = '' #所有数字的英文表达累加 for i in range(1, 1001):
baiwei = i//100 #百位数
shiwei = (i - baiwei*100)//10 #十位数
gewei = i%10 #个位数
eng = '' #当前数字的英文写法 if i == 1000:
eng += 'onethousand'
elif i%100 == 0: #若为整百的
eng = n1[baiwei] + 'hundred'
elif i > 100:
eng = eng + n1[baiwei] + 'hundredand'
if shiwei == 1 and gewei != 0:
eng += n2[gewei]
else:
eng = eng + n3[shiwei] + n1[gewei]
elif i > 19:
eng = eng + n3[shiwei] + n1[gewei]
elif i > 10:
eng += n2[gewei]
elif i == 10:
eng += 'ten'
else:
eng += n1[gewei]
sum += eng #累加各个数字的英文表达 print(len(sum))

老实说,看到这题的时候,我心里其实是不愿意做的:对于我这样的算法渣,肯定得写出N个 if 和 elif。但没办法,只好硬着头皮写,错了好几回之后,总算是把所有情况都考虑到了。擦汗……

大致思路是:把数字挨个儿转换成英文表达方式,累加起来,然后用 len() 计算总字符的长度即可。

最新文章

  1. JDK历史版本
  2. 有关windows系统的EXE和DLL文件说法错误
  3. static、const和static const
  4. 手把手windows64位配置安装python2.7
  5. Nancy总结(一)Nancy一个轻量的MVC框架
  6. Bootstrap 栅格系统(转载)
  7. bzoj 1977
  8. tracert 命令详解
  9. BZOJ1595 [Usaco2008 Jan]人工湖
  10. cookie使用
  11. Ubuntu14.04 LTS安装不成功
  12. C#压缩、解压缩文件(夹)(rar、zip)
  13. FlexPaper二次开发问题及搜索高亮显示
  14. C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
  15. 固定宽高的DIV绝对居中示例
  16. SpringMVC从认识到细化了解
  17. C++中继承与抽象类
  18. 嵌入式Linux驱动笔记(十八)------浅析V4L2框架之ioctl【转】
  19. linux 磁盘空间满了,排查记录
  20. sqlserver2014两台不同服务器上数据库同步

热门文章

  1. 序列号,IMEI,IMSI,ICCID的含义
  2. 上海做假证t
  3. MinGW-w64安装过程中出现ERROR res错误的问题
  4. Motion Matching 资料汇总
  5. python3笔记-列表
  6. HDU-1754-I Hate It(单点更新+区间查询)
  7. Commando War (贪心)
  8. MySQL索引凭什么能让查询效率提高这么多?
  9. javascript事件环微任务和宏任务队列原理
  10. 什么是 Catalan 数列以及其应用