Wenn Sie die Zahlen von 1 bis 5 auf Englisch schreiben, sind sie eins, zwei, drei, vier, fünf, und die Gesamtzahl der Zeichen beträgt 3 + 3 + 5 + 4 + 4 = 19.
Wenn Sie also alle Zahlen von 1 bis 1000 (eintausend) auf Englisch schreiben, wie viele Zeichen haben Sie insgesamt?
Hinweis: Zählen Sie keine Leerzeichen oder Bindestriche. Beispielsweise zählt 342 (dreihundertzweiundvierzig) als 23 Zeichen, 115 (einhundertfünfzehn) als 20 Zeichen. Beachten Sie, dass "und" in Großbritannien verwendet werden. Benutzerdefiniert. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2017
Es ist extrem nervig.
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