滴滴2017校園招聘程式設計題 階乘末尾0的個數

2021-07-22 20:51:29 字數 1038 閱讀 9278

1、題目如下圖所示:

2、分析:

這個題目描述的很簡單,思路看似也很清晰,我們第一想到的肯定就是正常計算和統計——先計算n!階乘的結果,然後統計結果末尾0的個數。看似這是乙個很好的也很簡單的理想方案,這裡我們也先不管合不合理,先看看它的實現過程,**貼出如下:     

#includeusing namespace std;

/*****計算n!的值****/

int fac(int nnum)

int main()

cout<

當你把程式執行後會發現,明明一些尾數肯定存在0的數,例如15!,但是計算結果卻統計沒有。那麼問題出在了**呢?

這裡我們聯想一下初中時候乙個經典問題,即2的次方引發的恐慌。當計算2的64次方時候,看似沒有多少步,但是實際上結果確是乙個天文數字。同樣的道理,因為階乘的計算的遞增速度是很高的,且long型別在32位編譯器上僅分配4個位元組記憶體,而64位上也就8個位元組。在32位編輯器上,實際上算到13!就已經超出了它最大的儲存範圍。而題目要求最大可以取到1000,所以這個題並不能以簡單計算統計的方式解決,還是要從資料規律上考慮。

我們可以看乘數的規律,資料末尾能出現0的可能性最簡單形式是2*5。例如:5!=1*2*3*(2*2)*5,出現了乙個2*5,所以末尾有1個零。由於每個資料在分解的時候,會出現2的個數比5多的多,所以匹配的話,只要統計資料集分解後5的個數即可。例如:15!中15之前能統計出3個5,即結果末尾存在3個0。

**如下:

#includeusing namespace std;

int main(void)

cout<

京東2017校園招聘程式設計題 幸運數

題目 4和7是兩個幸運數字,我們定義,十進位制表示中,每一位只有4和7兩個數的正整數都是幸運數字。前幾個幸運數字是 4,7,44,47,74,77,444,447 輸入 數字k輸出 第k個幸運數 樣例輸入 3 5 100 10000000 樣例輸出 74 744747 447744474474774...

2017百度校園招聘程式設計題

題目大概為輸入n個敏感詞彙和乙個文字串,在文字串中出現敏感詞彙的地方用 替代掉,輸出替換後的文字串。思路 直接kmp匹配出現敏感詞的地方,用乙個中間陣列標記。唯一的陷阱就是不區分大小寫,所以用kmp判斷兩個字元相等的注意下 替換敏感詞彙 include include include include...

挖財2023年校園招聘,程式設計題

晚上參加了挖財的筆試,把考試寫的整理一下 給大家分享,實現很簡單 希望對有需要的人的有所幫助。主要是還要體會這一類題目的處理方式,如下 public class countword public static void countword file file else word.delete 0,w...