• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            1000 的階乘有幾位數(shù)? - 后續(xù), 求解

            這是在 2006 年 11 月 17 日瀏覽小百合時(shí)得到的,當(dāng)時(shí)上不來(lái),就暫存在我的信箱里了。

            南京大學(xué)小百合站,Algorithm 版,x->18->1 和 x->18-2。

            x->18->1:(兩處紅色標(biāo)記是我個(gè)人加上的,懷疑原文有誤,即若有 10 和 100,則前面不應(yīng)有 90 和 1800)
            令結(jié)果為 x
            x=log2+log3+...+log9
              +90+log1.1+log1.2+...+log9.9
              +1800+log1.01+log1.02+...+log9.99
              +3
             =∫logx dx (從2到10)
              +90+10∫logx dx(從1.1到9.9)
              +1800+ 100∫logx dx (從1.01到9.99)
              +3
             = ...
            后兩次積分上限的不同是考慮到修正

            x->18->2:
            x=(∫log(x)dx(2--1001)+∫log(x)dx(1--1000))/2
             =((x*log(x)-∫xdlog(x))(2--1001)+(x*log(x)-∫xdlog(x))(1---1000))/2
             =2567.857000.....


            我個(gè)人的想法:

            經(jīng)過(guò)上述兩個(gè)方法,我猜想求解一個(gè)數(shù)的位數(shù)可以求解該數(shù)對(duì)其基數(shù)的對(duì)數(shù)(此處是以 10 為基數(shù)的),找了幾個(gè)數(shù)寫(xiě)了寫(xiě),發(fā)現(xiàn)可以:
            一個(gè)以 b 為基數(shù)的數(shù) N,在以 b 為基數(shù)的計(jì)數(shù)系統(tǒng)中的位數(shù) l,可以通過(guò)求 N 對(duì) b 的對(duì)數(shù)求得。
            具體為:l=floor[log b (N) + 1],即求對(duì)數(shù),結(jié)果加 1 后向下取整。
            例如:
            • length(123456789)10=floor[lg(123456789)+1]=floor[8.091514977+1 ]=9
            • length(100000000)10=floor[lg(100000000)+1]=floor[8+1]=9
            • length(10101)2=floor[log 2 (23) + 1]=floor[4.523561956+1]=5  (10101)2=(23)10
            再回到求解 1000 的階乘的位數(shù)上,則根據(jù)上面的說(shuō)明,有:(設(shè) 1000 的階乘結(jié)果為 N)
            length(N)10=floor[lg(N)+1]
                       =floor[lg(1*2*3*...*999*1000)+1]
                       =floor[lg1+lg2+lg3+...+lg999+lg1000+1]
                       =floor[lg2+lg3+...lg999+lg1000+1]    <= lg1=0
            這時(shí)問(wèn)題轉(zhuǎn)到了求解 lg2+lg3+...+lg999+lg1000 的累加上面。

            對(duì)于這一方面我不是很清楚(高等數(shù)學(xué)基本都不記得了...),不過(guò)根據(jù)前面兩篇文章,好像有:
            ∑(N=2..1000)lgN = ∫lgxdx (x=2..1000)

            如果成立的話(huà),則根據(jù) lgx = lnx/ln10 有:
            ∫lgxdx (x=2..1000) = (1/ln10)*∫lnxdx (x=2..1000)
                               = (1/ln10)*[x*lnx - ∫xd(lnx)] (x=2..1000)
                               = (1/ln10)*[x*lnx - ∫dx] (x=2..1000)
                               = (1/ln10)*[x*lnx - x] (x=2..1000)
                               = x*(lnx - 1)/ln10 (x=2..1000)

            然后由牛頓-萊伯尼茨公式可以得到:(也不知道是否能在此處應(yīng)用...)
            ∫lgxdx (x=2..1000) = 1000*(ln1000 - 1)/ln10 - 2*(ln2 - 1)/ln10
                               = [1000*(6.907755279 - 1) - 2*(0.693147181 - 1)]/ln10
                               = [1000* 5.907755279 - 2*(-0.306852819)]/2.302585093
                               = [5907.755279 - (- 0.613705639)]/2.302585093
                               = 5908.368984639/2.302585093
                               = 2565.97204707

            將結(jié)果代回前面的式子:
            length(N)10 = floor[2565.97204707 + 1] = 2566

            原先通過(guò) Python 計(jì)算過(guò) 1000 的階乘,位數(shù)為 2568 位。

            考慮前面推算的過(guò)程中把 x=1 時(shí) lg1 略掉了,理論上不應(yīng)產(chǎn)生區(qū)別,但若要是不略掉該項(xiàng)時(shí),則結(jié)果變成:
            ∫lgxdx (x=2..1000) = 1000*(ln1000 - 1)/ln10 - 1*(ln1 - 1)/ln10
                               = [1000*( 6.907755279 - 1) - 1*(0 - 1)]/ln10
                               = [1000*5.907755279 - 1*(-1)]/2.302585093
                               = [5907.755279 + 1]/2.302585093
                               = 5908.755279/2.302585093
                               = 2566.13981258

            length(N)10 = floor[2566.13981258 + 1] = 2567

            可見(jiàn)結(jié)果略有不同,但都與正確結(jié)果有一點(diǎn)小偏差,個(gè)人認(rèn)為思路是正確的,方法還有待改進(jìn)。同時(shí)看到第二篇引文的結(jié)果非常接近,不過(guò)我還不理解,還需在琢磨琢磨。

            還要再好好看看高等數(shù)學(xué)...


            posted on 2007-01-11 12:14 ScorpioLove 閱讀(1261) 評(píng)論(4)  編輯 收藏 所屬分類(lèi): 數(shù)據(jù)結(jié)構(gòu)與算法
             
            把求lgN(N=2.3.4....1000)轉(zhuǎn)換為積分,這個(gè)思路就有誤差吧。
            積分是連續(xù)的,而這里的N是離散的,所以這里的轉(zhuǎn)換不合理。
            Posted @ 2007-04-18 09:25    回復(fù)  引用  查看    
            #2樓 
            你紅字加的內(nèi)容不對(duì),不應(yīng)該乘10和100;
            樓上的說(shuō)的也不對(duì),把不可直接求職的離散轉(zhuǎn)為積分是基本的方法,只要誤差允許接受就可以,具體可以看CLRS的附錄A
            Posted @ 2007-04-24 10:07    回復(fù)  引用  查看    
            #3樓 [樓主]
            謝謝各位回復(fù),同時(shí)希望能原諒我不能及時(shí)的回復(fù)各位。

            @ 蔡暉

            事實(shí)上這個(gè)問(wèn)題,我在計(jì)算前也考慮過(guò),確實(shí)有誤差,不過(guò)就像 wqx 說(shuō)的,只要誤差可接受就可以了,像這里的誤差相對(duì)于實(shí)際結(jié)果而言是比較小的,可以接受。

            @ wqx

            關(guān)于紅字部分,我在算式前面的括號(hào)里注明了,10 和 100 是原來(lái)算式里就有的,但我覺(jué)得不該加,所以就用紅色標(biāo)記了一下,可能導(dǎo)致你誤以為是我強(qiáng)調(diào)要加上的...

            關(guān)于 CLRS,我目前正在讀,不過(guò)感覺(jué)好難啊,好多課后題都不會(huì)...
            如果可能,希望能和你交流一下^_^。
            Posted @ 2007-04-24 13:26    回復(fù)  引用  查看    
            #4樓 
            居然看到了牛頓萊布尼茨公式。。。。。
            Posted @ 2007-09-18 17:53    回復(fù)  引用  查看   
            posted on 2008-06-26 14:22 c++ 學(xué)習(xí) 閱讀(1668) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 算法
             
             
            久久婷婷五月综合成人D啪 | 中文字幕久久精品| 久久精品国产福利国产秒| 97久久精品无码一区二区| 欧洲人妻丰满av无码久久不卡| 国产国产成人久久精品| 亚洲欧美精品伊人久久| 国产精品热久久无码av| 精品久久久久一区二区三区| 亚洲国产精品人久久| 青青草国产97免久久费观看| 中文字幕无码久久精品青草| 国内精品久久久久影院亚洲| 亚洲国产精品无码久久一线 | MM131亚洲国产美女久久| 国产精品久久久久久久久鸭| 伊人久久综在合线亚洲2019| 久久亚洲2019中文字幕| 久久精品国产AV一区二区三区 | 久久久久噜噜噜亚洲熟女综合| 久久99热狠狠色精品一区| 久久福利片| 久久久久久久精品成人热色戒| 狠狠色综合网站久久久久久久高清| 亚洲国产天堂久久综合| 久久人人爽爽爽人久久久| 99精品久久久久久久婷婷| 久久精品国产亚洲AV香蕉| 2022年国产精品久久久久| 伊人热热久久原色播放www| 国产精品岛国久久久久| 久久国产三级无码一区二区| 久久精品国产亚洲AV香蕉| 久久男人中文字幕资源站| 久久亚洲精品成人AV| 久久性生大片免费观看性| 国产精品久久久久天天影视| 狠狠色丁香久久婷婷综合_中| 久久精品亚洲精品国产色婷| 武侠古典久久婷婷狼人伊人| 51久久夜色精品国产|