题目
如果用英文写出数字1到5: one, two, three, four, five, 那么一共需要3 + 3 + 5 + 4 + 4 = 19个字母。
如果数字1到1000(包含1000)用英文写出,那么一共需要多少个字母?
注意: 空格和连字符不算在内。例如,342 (three hundred and forty-two)包含23个字母; 115 (one hundred and fifteen)包含20个字母。”and” 的使用与英国标准一致。
解题方法
英文数字的表示
1~20
- one
- two
- three
- four
- five
- six
- seven
- eight
- nine
- ten
- eleven
- twelve
- thirteen
- fourteen
- fifteen
- sixteen
- seventeen
- eighteen
- nineteen
21~99
- 20 twenty
- 2X twenty-X
- 30 thirty
- 3X thirty-X
- 40 forty
- 50 fifty
- 60 sixty
- 70 seventy
- 80 eighty
- 90 ninety
- 讲解:除1-19是特定的表达外,20~99这些数字,除整十的数如上表达外,其余的都是先取整十数在加横线加各位数字。如28的英文表达为twenty-eight。62的英文表达为sixty-
- 100~1000
- 100 one hundred
- 10X one hundred and X (X代表一位数的英文表示)
- 102 one hundred and two
- 1XX one hundred and XX (XX代表两位数的英文表示)
- 122 one hundred and twenty-two
- AXX A hundred and XX
- 1000 one thousand
方法1-笔算
1-9的字母数,为
3+3+5+4+4+3+5+5+4=36
;
10-19的字母数,为
3+6+6+8+8+7+7+9+8+8=70
;
20-29的字母数,为
6×10+36=96
;
30-39的字母数,为
6×10+36=96
;
40-49的字母数,为
5×10+36=86
;
50-59的字母数,为
5×10+36=86
;
60-69的字母数,为
5×10+36=86
;
70-79的字母数,为
7×10+36=106
;
80-89的字母数,为
6×10+36=96
;
90-99的字母数,为
6×10+36=96
;
所以1-99的字母数,为 36+70+96×4+86×3+106=854 ;
100-199的字母数,为
(3+7)×100+3×99+854=2151
;
200-299的字母数,为
(3+7)×100+3×99+854=2151
;
300-399的字母数,为
(5+7)×100+3×99+854=2351
;
400-499的字母数,为
(4+7)×100+3×99+854=2251
;
500-599的字母数,为
(4+7)×100+3×99+854=2251
;
600-699的字母数,为
(3+7)×100+3×99+854=2151
;
700-799的字母数,为
(5+7)×100+3×99+854=2351
;
800-899的字母数,为
(5+7)×100+3×99+854=2351
;
900-999的字母数,为
(4+7)×100+3×99+854=2251
;
1000的字母数,为
3+8=11
;
所以1-1000的字母数,为 854+2151×3+2251×3+2351×3+11=21124
方法2-编程
编程实现两个函数,一个将整数转为英文表示,第二个函数实现统计这个英文表示有几个字母。
代码暂时缺失,未来加上。