階乘後的零 階乘後倒數第乙個非零數字

2021-09-18 03:39:22 字數 1226 閱讀 6263

給定乙個整數 n,返回 n! 結果尾數中零的數量。

示例 1:

輸入: 3

輸出: 0

解釋: 3! = 6, 尾數中沒有零。

示例 2:

輸入: 5

輸出: 1

解釋: 5! = 120, 尾數中有 1 個零.

在1~9這9個數字裡面,只有5和乙個偶數才可以乘積得到0,遇到乙個%10為0的數就多乙個0,所以就可以以5來判斷這個結果,如下:

int

trailingzeroes

(int n)

int count =0;

while

(n)return count;

}

給定乙個整數 n,返回 n! 結果中倒數第乙個非零的數字。

示例 1:

輸入: 3

輸出: 6

解釋: 3! = 6。

示例 2:

輸入: 5

輸出: 2

解釋: 5! = 120。

我們可以使用暴力的方式計算這個數字。

int

lastnotzeronumber

(int n)

while

(res %

10==0)

return res %10;

}

但是這樣會存在乙個問題,就是當n的數字變大的時候,階乘後的結果是很大的,即便我們把返回結果給成long long型的,所以這時候就需要處理一下每次的結果,我們要得到的是倒數第乙個非0的數字,所以我們是不是可以把結果中末尾為0的部分去掉,這樣並不影響最後的結果,所以每次得到乙個值,判斷它是否能**%10 == 0**,如果能得話,給它除掉最後面的0,但是這樣並不能完全解決問題,當輸入的數很大的時候,0的個數佔整個數字長度的一少部分,也就是說它還會很大很大,long long還是存不下,所以這時候就應該考慮只保留它的有效部分,就是給這個結果取末尾的n位,(這個n可以為2,可以為3,但是不能小於2,因為兩個小於10的數字相乘極大可能超過兩位數,所以這個時候n取2就可以,也就是給這個結果%100),參考**如下:

int

lastnotzeronumber

(int n)

res %

=100;}

return res %10;

}

階乘後的零

示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零。說明 你演算法的時間複雜度應為 o log n 2.1 思路分析 當1個數乘以10的時候,它的末尾會多乙個零,而10只可分解為2 5,因此要確定乙個整數的末尾有多少零,需要知...

階乘後的零

給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 1.求尾數0的個數,即10,10只能由2 5組成,所以求因子中 2 和 5的個...

LeetCode 階乘後的零

一.題目描述 給定乙個整數 n,返回 n 結果尾數中零的數量。示例 1 輸入 3 輸出 0 解釋 3 6,尾數中沒有零。示例 2 輸入 5 輸出 1 解釋 5 120,尾數中有 1 個零.說明 你演算法的時間複雜度應為 o log n 二.解法 老實說,這道題,博主並沒有做出來,是抄的部落格大神的答...