[Project Euler]加入欧拉 Problem 17

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.

 

计算1到1000中所有数使用的英文字母数。不计连字符。

这个题目看起来挺唬人的,其实分析下就不难了。下面这个是英文拼写单词的用法:

 

one 、two 、three 、four 、five 、six 、seven 、eight 、nine 、ten ——这是基本的数字,一定要记!
eleven 、twelve、thirteen 、fifteen 、 ——11、12、13、15比较特殊,也是要记!

fourteen 、sixteen 、seventeen 、eighteen 、nineteen——这里就有规律可循,14、16、17、18、19均是在4、6、7、8、9后面加上 teen。
twenty 、thirty 、forty、 fifty ——20、30、40、50也是比较特殊,死记呗!

sixty 、seventy 、eighty、 ninety ——60、70、90均是在6、7、9后面加ty,而80里,8(eight)已经有t,直接加y。

以下依次是在20、30、40、50、60、70、80、90后面写连词符号(-)再加上基本数字。如21就是在20(twenty)后面写上连词符号(-),再加上1(one)

一百:one/a hundred

one hundred and one、one hundred and two……one hundred and fifty(一百零一、一百零二……一百五十)

一百零一到一百五十的数字,用one hundred and …,and后面加上数字

如:

一百一十:one hundred and ten

一百一十五:one hundred and fifteen

一百二十:one hundred and twenty

一百二十五:one hundred and twenty-five

看完上面就知道了规律了:

首先个位数,这个不用说,就9个。

其次最重要的分析十位数,十位数里面1开头的和其他的是有区别的,这个要特殊对待。 一点点分析。

再次三位数的时候就很简单了,可以拆分为 one hundred and 这样的格式,这里三位数要注意两点:

a. 整百的数,比如200 two hunderd。这样的数是不带and的,所以要特别注意

b. 剩下的就是三位数的拆分了,三位数有两种 几百 + 几十的,还有几百加几个的。

下面就是代码了:

欧拉项目第十七道题

你可能感兴趣的:(project)