±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 1426  |  »Ø¸´: 4

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

[½»Á÷] Euler Project Q17. Å·À­¹¤³ÌµÚÊ®ÆßÌâ ÒÑÓÐ3È˲ÎÓë

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-5д³ÉÓ¢Îĵ¥´ÊÐÎʽ one, two, three, four, five, ÄÇôһ¹²Ê¹ÓÃÁË3 + 3 + 5 + 4 + 4 = 19¸ö×Öĸ.

Èç¹û1-1000µÄÊý×Ö±»Ð´³Éµ¥´ÊÐÎʽ,Ò»¹²Ê¹ÓöàÉÙ×Öĸ?

×¢Òâ:²»Òª¼ÆËã¿Õ¸ñ,Á¬×Ö·û.ÀýÈç343 (three hundred and forty-two)°üº¬23¸ö×Öĸ,115 (one hundred and fifteen) °üº¬20¸ö×Öĸ. Êý×Öתµ¥´Êʱ"and"Ó÷¨Ê¹ÓÃÓ¢¹ú¸ñʽ.
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

libralibra

ÖÁ×ðľ³æ (ÖøÃûдÊÖ)

æôÆï½«¾ü

¡ï ¡ï ¡ï ¡ï ¡ï
΢³¾¡¢ÃÎÏë(½ð±Ò+5): лл²ÎÓ룡 2011-05-29 16:31:31
Õâ¸öÌâͳ¼ÆºÜ¼òµ¥,ÉÔÓÐÄѶȾÍÊÇÊý×ֱ䵥´ÊµÄËã·¨

matlab code
CODE:
%% How many letters would be needed to write all the numbers in words from 1 to 1000?
function result = euler17()
tic;
numstr = '';
for i=1:1000
    numstr = [numstr,' ',num2words(i)];
end
numstr = strrep(numstr,' ','');
numstr = strtrim(numstr);
result = length(numstr);
toc;
end

%% write a number in words
% called by euler 17
function result = num2words(num)
key = [1:20,30:10:90];
value = {'one','two','three','four','five','six','seven','eight','nine','ten','eleven','twelve', ...
        'thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen', ...
        'twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety'};
numlist = containers.Map(1,'one'); % must add a value first, then map can hold the right key type
for i=2:length(key)
    numlist(key(i)) = value{i};
end
result = '';
switch length(num2str(num))
    case 4
        if mod(num,1000)==0
            result = [result,numlist(fix(num/1000)),' thousand',num2words(rem(num,1000))];
        else
            result = [result,numlist(fix(num/1000)),' thousand and ',num2words(rem(num,1000))];
        end
    case 3
        if mod(num,100)==0
            result = [result,numlist(fix(num/100)),' hundred',num2words(rem(num,100))];
        else
            result = [result,numlist(fix(num/100)),' hundred and ',num2words(rem(num,100))];
        end
    case 2
        if fix(num/10)==1
            result = [result,numlist(num)];
        else
            result = [result,numlist(fix(num/10)*10),' ',num2words(rem(num,10))];
        end
    case 1
        if num==0
            result = '';
        else
            result = [result,numlist(num)];
        end
    otherwise
        result = '';
end
end

matlabЧÂÊ»¹ÊDz»¸ß
CODE:
% Elapsed time is 6.267496 seconds.
% ans =
%        21124

matlab/VB/python/c++/Javaд³ÌÐòÇë·¢QQÓʼþ:790404545@qq.com
2Â¥2011-05-28 03:54:36
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ÄäÃû

Óû§×¢Ïú (СÓÐÃûÆø)

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
΢³¾¡¢ÃÎÏë(½ð±Ò+5): лл²ÎÓ룡 2011-05-29 16:31:45
±¾Ìû½öÂ¥Ö÷¿É¼û
3Â¥2011-05-28 08:55:10
ÒÑÔÄ   ÉêÇë³ÌÐòÇ¿Ìû   »Ø¸´´ËÂ¥   ±à¼­   ²é¿´ÎÒµÄÖ÷Ò³

holmescn

½ð³æ (ÕýʽдÊÖ)

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
΢³¾¡¢ÃÎÏë(½ð±Ò+5): лл²ÎÓ룡 2011-05-29 16:31:59
Íê³ÉÁËPython°æ
CODE:
#/bin/env python

ones = ["", "one", "two", "three", "four", "five",
        "six", "seven", "eight", "nine", "ten",
        "eleven", "twelve", "thirteen", "fourteen",
        "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"]

tens = ["", "twenty", "thirty", "forty", "fifty",
        "sixty", "seventy", "eighty", "ninety"]

words = ["", " thousand", " million", " billion"]

def num2words(n):
    "Convert an integer to english words"
    def part(num, s):
        "Convert a part of numbers"
        if num < 20:
            return s + ones[num]

        if num < 100:
            return s + tens[num / 10 - 1] + " " +  ones[num % 10]

        return ones[num / 100] + " hundred " + s + part(num % 100, "")

    # divided into several part
    # each part contain three numbers
    t = 1000
    # results list
    r = []
    i = 0
    while n > 0:
        # add "and" into the word
        if i == 0 and n > 100 and n % 100 != 0:
            r.append(part(n % t, 'and ') + words[i])
        else:
            r.append(part(n % t, "") + words[i])
        n /= t
        i += 1
    r.reverse()
    return r


if __name__ == "__main__":
    s = 0
    for i in range(1, 1001):
        for w in num2words(i):
            s += sum([len(x) for x in w.split()])
    print "total length:", s

ͬÑùÍÆ¼öÂ¥ÉÏÓÃBBCode·¢²¼´úÂë.
4Â¥2011-05-28 13:57:38
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

wangww2011

ľ³æ (ÖøÃûдÊÖ)

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû
΢³¾¡¢ÃÎÏë(½ð±Ò+5): лл²ÎÓ룡 2011-05-29 16:32:11
ÕâÒ»ÌâºÜÎÞÁİ¢
½á¹û
CODE:
21124
elapsed time=0.000000 seconds.

´úÂë
CODE:
#include
#include
#include

#define TIMERSTART clock_t start_time,stop_time;double elapsed_time;start_time = clock();
#define TIMERSTOP stop_time = clock();elapsed_time=(double)(stop_time-start_time)/CLOCKS_PER_SEC;printf("elapsed time=%f seconds.\n",elapsed_time);

static int bufa[]={4,3,3,5,4,4,3,5,5,4,//zero, one, ..., nine,
                  3,6,6,8,8,7,7,9,8,8 };// ten, eleven, ..., nineteen
static int bufc[]={0,0,6,6,5,5,5,7,6,6}; //0, 0, twenty, thirty, ..., ninety

int count(int n){
  if(n<20)return bufa[n];
  if(n<100) {
    if(n%10==0) return bufc[n/10];
    else
      return bufc[n/10]+bufa[n%10];
  }
  if(n<1000) {
    if(n%100==0)
      return bufa[n/100]+7;
    else
      return bufa[n/100]+count(n%100)+10;
  }else if(n==1000) return 11;

  return -1;
}

int euler17(int n){
  int i,sum=0;
  
  for(i=1;i     sum+=count(i);
  
  return sum;
}


int main(void){
  
TIMERSTART;

printf("%d\n",euler17(1000));
  
TIMERSTOP;

  return 0;
}

5Â¥2011-05-29 11:16:25
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ libralibra µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Çóµ÷¼Á +7 ÕÅ.1 2026-04-05 7/350 2026-04-05 20:40 by à£à£à£0119
[¿¼ÑÐ] ¸´ÊÔµ÷¼Á +8 ´ºÈÕÀ´ÐÅ- 2026-04-03 8/400 2026-04-05 18:58 by À¶ÔÆË¼Óê
[¿¼ÑÐ] 081700ѧ˶£¬323·Ö£¬Ò»Ö¾Ô¸Öйúº£Ñó´óѧÇóµ÷¼ÁѧУ +16 ÅûÐÇºÓ 2026-04-04 16/800 2026-04-05 11:27 by Öí»á·É
[¿¼ÑÐ] Ò»Ö¾Ô¸±±¾©»¯¹¤´óѧ£¬³õÊԳɼ¨350Çóµ÷¼Á +9 ÑØ°¶?±´¿Ç 2026-04-04 14/700 2026-04-05 01:09 by ÑØ°¶?±´¿Ç
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +12 Ò»ÑùYWY 2026-04-02 13/650 2026-04-04 20:49 by À¶ÔÆË¼Óê
[¿¼ÑÐ] Ò»Ö¾Ô¸»ªÄÏʦ·¶361·Ö£¬»¯Ñ§Çóµ÷¼Á +7 Nicole88888 2026-04-01 7/350 2026-04-04 18:28 by macy2011
[¿¼ÑÐ] ±¾9Ò»Ö¾Ô¸2 0854µÍ·Öר˶286Çóµ÷¼Á +9 âÖÖ111 2026-04-04 9/450 2026-04-04 11:01 by tangruihua
[¿¼ÑÐ] 265Çóµ÷¼Á +20 ÁºÁºÐ£Ð£ 2026-04-01 21/1050 2026-04-04 00:38 by userper
[¿¼ÑÐ] 322Çóµ÷¼Á +6 FZAC123 2026-04-03 6/300 2026-04-03 22:23 by ¿ÆÑÐСר¼Ò
[¿¼ÑÐ] 292Çóµ÷¼Á +21 ÊÇåû×ÓÒ²ÊÇÑÐ×Ó 2026-03-30 22/1100 2026-04-03 21:44 by qlm5820
[¿¼ÑÐ] Êý¶þÓ¢¶þ348Çóµ÷¼Á +4 hxdzj1 2026-04-03 5/250 2026-04-03 21:25 by zhq0425
[¿¼ÑÐ] 303Çóµ÷¼Á +9 DLkz1314. 2026-03-30 9/450 2026-04-03 18:34 by lsÁõ˧
[¿¼ÑÐ] ÉúÎïѧ308·ÖÇóµ÷¼Á£¨Ò»Ö¾Ô¸»ª¶«Ê¦´ó£© +6 ÏàÐűػá¹ââÍòÕ 2026-03-31 7/350 2026-04-02 23:16 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸´ó¹¤Ñ§Ë¶£¬Çóµ÷¼Á +4 yub0811 2026-04-02 4/200 2026-04-02 21:36 by °ÙÁéͯ888
[¿¼ÑÐ] 0805Çóµ÷¼Á +8 ÊÇË®·Ö 2026-03-31 8/400 2026-04-02 10:46 by guanxin1001
[¿¼ÑÐ] °²È«¹¤³Ì 285 Çóµ÷¼Á +3 Xinyu56 2026-04-01 4/200 2026-04-01 21:50 by ¾²¾²¾²¾²¾²¾²¾²¾
[¿¼ÑÐ] 292Çóµ÷¼Á +17 ľ³æer12138 2026-04-01 17/850 2026-04-01 21:37 by Æß¶È²»ÐÅÈÎ
[¿¼ÑÐ] 085404 22408 315·Ö +5 zhuangyan123 2026-03-31 6/300 2026-03-31 13:48 by limeifeng
[¿¼ÑÐ] Ò»Ö¾Ô¸Î÷µç085401ÊýÒ»Ó¢Ò»299Çóµ÷¼Á Áù¼¶521 +4 °®³Ô´óѼÀæ 2026-03-31 4/200 2026-03-31 11:51 by ²«»÷518
[¿¼ÑÐ] 269Çóµ÷¼Á +4 ÎÒÏë¶ÁÑÐ11 2026-03-31 4/200 2026-03-31 10:04 by cal0306
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û