C C 面試題精選

2021-12-29 23:44:02 字數 640 閱讀 7399

1000的階乘有多少位?有多少個連續的0?

有個階乘公式

例如1000階乘位數:

log10(1)+log10(2)+···+long10(1000)取整後加1

或者log(n!)=lnn!/ln10

=(nlnn-n)/ln10

=2565.7

本來有一種方法可以獲取階乘結果的位數的,但是要計算n個log10,時間上不好,所以放棄這種方法:

設位數為x,

列等式10^x=n!,  www.2cto.com

則x=log10(n!)

則x=log10(1)+log10(2)+log10(3)+...+log10(n),

最後x向上取整就行了

每出現乙個2和5,就會在末尾有乙個0,所以只要看,從1

到1000中總共有多少個2和5就可以了,又因為5總比2少,所以,只要看1000的階乘中有多少個約數5就可以了。同樣,只有末尾是0或者5的數才會有5,所以總共只有200個數其中包含5,但是,其中有1000/25=40個數包含2個5,1000/125=8個數包含三個5,1000/625=1個數包含4個5,所以總共有200+40+8+1=249個5,所以結果裡總共有249個連續的0。

作者:fengzhishang2019

面試題精選 微軟試題

微軟試題 1 直線飛行 一架飛機載滿油飛行距離為1,n架飛機最遠能飛多遠?就是不是兜圈沒有迎頭接應的情況,這問題就是n架飛機能飛多遠?存在的極值問題是不要重複飛行,比如兩架飛機同時給一架飛機加油同 時飛回來即可認為是重複,或者換句話說就是離出發點越遠在飛的飛機 就越少,這個極值條件是顯然的,因為n架...

幾個面試題精選

面試題35 typedef和define有什麼區別 1 用法不同 typedef用來定義一種資料型別的別名,增強程式的可讀性。define主要用來定義常量,以及書寫複雜使用頻繁的巨集。2 執行時間不同 typedef是編譯過程的一部分,有型別檢查的功能。define是巨集定義,是預編譯的部分,其發生...

C 面試題精選

1 執行如下的c 輸出是什麼?class a class b public a int main 答案 輸出b fun with number 10。由於a是乙個指向b例項的引用,因此在執行的時候會呼叫b fun。但預設引數是在編譯期決定的。在編譯的時候,編譯器只知道a是乙個型別a的引用,具體指向什...