求N 有多少個0,1,2, ,9

2021-06-19 06:24:17 字數 525 閱讀 3271

給出乙個正整數n(0<=n<=10000),求n!有多少個0,1,2,…,9。

輸入有一行,為乙個正整數n

輸出n!中0,1,2,…,9的個數(以空格隔開) 10

2 0 1 1 0 0 1 0 2 0

分析:n!最多只有35660位(n=10000時),因為時間充足,所以可採用求大數階乘的演算法求出n!的具體數值,然後開乙個足夠大的陣列存放,再然後遍歷一遍陣列,統計每個數字出現的次數即可。

c++實現**如下:

#include#define max 100000

using namespace std;

int s[10];

int main()

while(h>0)

}for(i=p; i>0; i--)

s[a[i]]++;

for(i=0; i<10; i++)

if(i==9)

cout

cout

}

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