求1 2 3 N所得數末尾有多少個0

2021-09-29 09:31:11 字數 570 閱讀 2732

n(1<=n<=2^(31))。所以說,暴力的方法就別想了,這很明顯就是個數學問題,要我們去發現數學規律。

要出現0,就需要有2和5,當然10也可以,不過10肯定也能因式分解為2和5,所以也就可以看做2和5。我們的最終目的就是尋找這個1-n這些數中能找到多少對2和5,有多少對2和5就有多少個0。在0-n的數中,我們假設對每乙個數進行分解,都嘗試去分解成2和5。當然不是所有的數都可以分解成2和5,但是最終分解出來的結果2的數量肯定是多於5的數量的,這一點其實很容易想通,二的倍數實在是太多了。最終我們的目的就是求0-n這些數中能分解出多少個5,那麼能分解出多少個呢?假設現在的n是100,能分解出多少個5呢?0-100的這些數中有多少個能分解出5的數,有20個怎麼知道的呢,0加20個5才能加到100,所以就有20個,然後對這20個數除5,也就是把分解的5拆分出來,看哪些數還能再進行拆分,最終就能得到答案。

**實現:

#include#include#define ll  long long

int main()

printf("%d",res);

return 0;

}

求N!末尾有多少個0

思考 該題實際上是求 2 5 因子對的個數。對於任意乙個階乘,5因子的個數總是小於2因子的個數,僅需考慮n 中5因子的個數 方法 1 將該數用 5 除,得到的商取整數。2 然後再用所得商當被除數除以 5,得到的商取整數。3 持續做到商等於 0 為止。4 過程中的商加總即為階乘的尾數 0 的個數。例 ...

2012 09 03 求N 末尾有多少個0

n 末尾有都少個0,首先追本溯源0是怎麼得來的,所有的0都是由質因數2和5相乘得到的。那麼對所有的n 在內的n個數進行質因數分解,只需要計算2和5的個數,取其中較小的乙個,即能得到n 有多少個0。1 要對n個數進行質因數分解,採取最暴力的方式也能解決,當n很大的情況下就不再適用了,那麼有沒有一種方法...

求N 中末尾有多少個0

分析 對n進行質因數分解 n 2 x 3 y 5 z.由於10 2 5,所以末尾0的個數只和x與z有關,每一對2和5相乘可以得到乙個10,於是末尾0的個數 min x,z 在實際中x是遠遠大於z的,所以我們只要求出z的值即可。根據公式 z n 5 n 5 2 n 5 3 n 5 k 這表明,5的倍數...