CodeVS2860 階乘末尾的零

2022-04-06 01:32:03 字數 503 閱讀 6155

100的階乘1*2*3*...*100結果是個很大的數,求這麼大的數末尾有多少個連續的零。

含有乙個正整數n (n不大於100000000)。

僅乙個整數,表示n!的末尾有多少個連續的零。

根據算術基本定理(正整數唯一分解定理) n! = 2x * 3y * 5z * …

所有的0都是又2和5相乘得出的,而顯然x>z,所以ans=z;

#includeusing

namespace

std;

intn,ans;

intmain()

寫的時候犯了乙個錯誤,for (;a,b;) 這樣是條件a或條件b,而不是與。

進一步優化:z =  [n/5] +[n/52] +[n/53] + …

#includeusing

namespace

std;

intn,ans;

intmain()

維基百科 算術基本定理

階乘末尾零的個數

請設計乙個演算法,計算n的階乘有多少個尾隨零。給定乙個int n,請返回n的階乘的尾零個數。保證n為正整數。測試樣例 5返回 1 思路 對n 進行質因數分解,n 2的x次方 3的y次方 5的z次方 因為10 2 5,所以末尾零的個數只與x和z相關,每一對2和5相乘可以得到乙個10,因為x大於等於z,...

階乘末尾零的個數

求乙個數的階乘末尾零的個數。數學結論題。如果你去求階乘再去求末尾零的個數,累死你,給你10000,你就得寫高精度了。顯然暴力不是正解。我們換個角度。末尾的 0 是怎麼來的?顯然,二五一十啊。乙個二乙個五,乙個十。進一步想,二咋來的,5咋來的?一堆數相乘,2多了去了,每個偶數都有至少乙個2.再看5。顯...

n的階乘問題 階乘位數 階乘末尾0的個數

初來乍到,望高手指教!原有解決n的階乘的方式 迭代,如果是大資料的話,迭代會吃掉大量記憶體,導致記憶體溢位 用平時的迭代解決n的階乘問題 在計算21的階乘時,結果已然為負數,超出整型資料表示範圍。計算34的階乘是,結果已然為0 此段 將n的階乘問題解決,實現無限大數的階乘!無限 兩字有點牽強,數字太...