poj1041(某數階乘尾數0的個數)

2021-08-18 13:01:37 字數 837 閱讀 2496

題意很簡單這裡就不贅述了

這裡主要講一下一些知識點

唯一分解定理,

概念;任意乙個大於0的正整數都能被表示成若干個素數的乘積且表示方法是唯一的;整理可以將相同素數的合併;可以得到

公式————n = p1^a1 * p2^a2 * …………* (p1 < p2 < ……pn);(這就是標準分解式)

但還有乙個關於階乘的分解式

例如;求29階乘的標準分解式;

不超過29的素數有哪些;2,3,5,7,11,13,17,19,23,29;

就這麼多了,然後我們要做什麼呢,才可以求出29階乘的標準分解式;就是要求出這些素數的冪是好多;

2(29!)//讓它表示29階乘的標準分解式中素數2的冪;其餘類似;

先解釋一下[a]是什麼意思,表示小於a的最大整數;

2(29!) = [29/2^1]+[29/2^2]+[29/2^3]+[29/2^4]

= 14+7+3+1=25;

25就表示29階乘的分解式中素數2的個數;

應該有人有疑問,為什麼只加到29/2^4不在繼續加呢,這裡有什麼特殊的,只加到這裡。當然有特殊的29/2^4=1;如果繼續加也是0啊;因此就加到[29/2^x]==1這裡;

其餘也是這樣

以上**:

其實也可以理解為從n!取出因子5,小於5就不取,得到n/5個因子5,而後數字變為n/5,也是同型別的問題

#include#include#includeusing namespace std;

int main()

printf("%d\n",ans);}}

return 0;

}

某數階乘的尾數0的個數

1 大數的階乘後尾0的個數,求0的個數,讓我們想到0就是由2,5的乘積組成,這裡我為什麼沒有把10,100 等等,都出來而只單單說只是2,和5的乘積呢,我們先回憶一下,唯一分解定理。2 唯一分解定理,概念 任意乙個大於0的正整數都能被表示成若干個素數的乘積且表示方法是唯一的 整理可以將相同素數的合併...

演算法精練 高次方數的尾數 階乘尾數零的個數

高次方數的尾數 要求 求133的133次方的最後三位數。利用c c 程式進行設計。演算法設計 由於計算機所能表示的整數範圍有限,直接乘的方法顯然是不可能得到正確的結果。但事實上,題目只要求保留後三位,完全沒有必要求出完整結果。因此 通過研究乘法的規律可以發現,乘積的後三位的值只與乘數與被乘數的後三位...

階乘問題(求 階乘最右邊不為 0 的數)

題目提供者評測方式雲端評測標籤usaco高效能 難度普及 提高 時空限制1000ms 128mb 提交 題解 也許你早就知道階乘的含義,n階乘是由1到n相乘而產生,如 12 1 times 2 times 3 times 4 times 5 times 6 times 7 times 8 times...