愛奇藝筆試 n!末尾有幾個0

2021-10-23 17:28:20 字數 573 閱讀 7763

分析:看到這個問題,有人可能第一反應是先求出n!,然後再根據求出的結果,最後得出n!的末尾有多少個0。但是轉念一想,會不會溢位。

其實,從」哪些數相乘可以得到10」這個角度,問題就變得比較的簡單了。

首先考慮,如果n的階乘為k和10的m次方的乘積,那麼n!末尾就有m個0。

n的階乘可以分解為: 2的x次方,3的y次方,5的次z方……的一系列質因子相乘。由於10 = 2 * 5,所以m只能和x和z有關,每一對2和5相乘就可以得到乙個10,於是m = min(x,z),因為是階乘,所以2的次方x大於5的次方z,因為被2整除的頻率比被5整除的頻率高的多。所以可以把公式簡化為m=z.

由上面的分析可以看出,只要計算出z的值,就可以得到n!末尾0的個數

方法一要計算z,最直接的方法就是求出n的階乘的所有因式(1,2,3,…,n)分解中5的指數。然後求和

int fun1(int n)

}return num;

}

方法二:

int fun2(int n)

return num;

}

愛奇藝 筆試

題目描述 時間限制 1秒 空間限制 32768k 牛牛養了n只奶牛,牛牛想給每只奶牛編號,這樣就可以輕而易舉地分辨它們了。每個奶牛對於數字都有自己的喜好,第i只奶牛想要乙個1和x i 之間的整數 其中包含1和x i 牛牛需要滿足所有奶牛的喜好,請幫助牛牛計算牛牛有多少種給奶牛編號的方法,輸出符合要求...

找出n 末尾有幾個0?

解法一 找出n 中質數2和質數5的個數,由於能被2整除的數的個數比能被5整除的數多的多,因為只需求出質數5的個數。利用z z 5 z 25 z 125 其中 z 5 表示 z的數中含有質數5的個數。includeusing namespace std intmain cout system paus...

愛奇藝 筆試刷題

題目描述 牛牛和羊羊非常無聊.他們有n m個共同朋友,他們中有n個是無聊的,m個是不無聊的。每個小時牛牛和羊羊隨機選擇兩個不同的朋友a和b.如果存在多種可能的pair a,b 任意乙個被選到的概率相同。然後牛牛會和朋友a進行交談,羊羊會和朋友b進行交談。在交談之後,如果被選擇的朋友之前不是無聊會變得...