Si vous écrivez les nombres de 1 à 5 en anglais, ils sont un, deux, trois, quatre, cinq et le nombre total de caractères est 3 + 3 + 5 + 4 + 4 = 19.
Ensuite, si tous les nombres de 1 à 1000 (mille) sont écrits en anglais, combien de caractères seront au total?
Remarque: ne comptez ni les espaces ni les traits d'union. Par exemple, 342 (trois cent quarante-deux) compte pour 23 caractères, 115 (cent quinze) pour 20 caractères. Notez que "et" est utilisé au Royaume-Uni. Douane. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2017
C'est extrêmement ennuyeux.
def get_x(num):
x=num%10
L1 = ['', 'one','two','three','four','five','six','seven','eight','nine']
return L1[x]
def get_xx(num):
L2 = ['']*10+['ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen']
L3 = ['','','twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety']
xx = num % 100
if xx < 10:
return get_x(xx)
elif xx < 20:
return L2[xx]
else:
return L3[xx//10] + get_x(xx)
def get_xxx(num):
xxx = num//100
xx = num%100
if xxx:
if xx:
return get_x(xxx)+'hundredand'+get_xx(xx)
else:
return get_x(xxx)+'hundred'
else:
return get_xx(xx)
def get_xxxx(num):
if num == 1000:
return 'onethousand'
else:
return get_xxx(num)
def main():
s = ''
for i in range(1,1001):
s += get_xxxx(i)
print len(s)
main()
Recommended Posts