程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C/C++面試題精選

C/C++面試題精選

編輯:C++入門知識

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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved