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

2021-06-09 02:15:43 字數 792 閱讀 5068

n!末尾有都少個0,首先追本溯源0是怎麼得來的,所有的0都是由質因數2和5相乘得到的。

那麼對所有的n!在內的n個數進行質因數分解,只需要計算2和5的個數,取其中較小的乙個,即能得到n!有多少個0。

(1)要對n個數進行質因數分解,採取最暴力的方式也能解決,當n很大的情況下就不再適用了,那麼有沒有一種方法能夠快速求出這n個數中有多少個2或5呢?

(2)採用縮小範圍的方法,舉例來說要求n!由多少個m(m是質數),那麼首先用n/m=s。那麼這s個數(1--s)*m都能被m整除。同時還有一些數能多次整除m

就將這些數轉到(1--s)範圍內,轉化成求(1--s)有多少個數能被m整除了。

**實現:

/*

* file:   main.cpp

* author: sxw

** created on 2023年8月27日, 下午6:02

*/#include

#include

#include

#include

using namespace std;

/** 求n!末尾有多少個0

*/int fun(int n,int m)

return ans;

}int main(int argc, char** argv) {

int n,ncases;

cin>>ncases;

while(ncases--)

{cin>>n;

cout《注:可以到   測試你寫的**。

求N!末尾有多少個0

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

求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的倍數...

求N 的末尾有多少個零

歷程 今天的題目中有乙個求n 的末尾有多少個零,遇到這道題開始也是很蒙呢,不過一開始我的思路就是對的,中間還發生一段小插曲,就是輸入輸出的行數我看錯了,導致浪費了不少時間在樣例模擬上,不然就首a啦哈哈 想想自己真的好蠢哦 思路 我開始用的算數基本定理來解決的,每乙個數都是可以唯一有若干個素數的乘積得...