基準時間限制:1 秒 空間限制:131072 kb
n的階乘後面有多少個0?
6的階乘 = 1*2*3*4*5*6 = 720,720後面有1個0。
input
乙個數n(1 <= n <= 10^9)
output
輸出0的數量
input示例
output示例
思路:
程式設計之美:乙個數 n 的階乘末尾有多少個 0 取決於從 1 到 n 的各個數的因子中 2 和 5 的個數, 而 2 的個數是遠遠多餘 5 的個數的, 因此求出 5 的個數即可. 題解中給出的求解因子 5 的個數的方法是用 n 不斷除以 5, 直到結果為 0, 然後把中間得到的結果累加. 例如, 100/5 = 20, 20/5 = 4, 4/5 = 0, 則 1 到 100 中因子 5 的個數為 (20 + 4 + 0) = 24 個, 即 100 的階乘末尾有 24 個 0. 其實不斷除以 5, 是因為每間隔 5 個數有乙個數可以被 5 整除, 然後在這些可被 5 整除的數中, 每間隔 5 個數又有乙個可以被 25 整除, 故要再除一次, … 直到結果為 0, 表示沒有能繼續被 5 整除的數了。
例如:
1到100中:…5…5*2…5*3…5*4…5*5(兩個5因子)…5*6…………5*5*2(兩個)….5*5*4。
每隔5個數出現乙個數至少有乙個5因子,每隔25個數出現乙個數至少有兩個5因子。
以此類推,如果n很大時,每隔120個數出現乙個數至少有三個5因子………………
按這個規律就可以想明白了。
**:
#include
#include
using
namespace
std;
int main()
cout
0;}
51 nod 1003 階乘後面0的數量
1003 階乘後面0的數量 基準時間限制 1 秒 空間限制 65536 kb 分值 5n的階乘後面有多少個0?6的階乘 1 2 3 4 5 6 720,720後面有1個0。input 乙個數n 1 n 10 9 output 輸出0的數量input 示例 5output 示例 1程式設計之美有講 乙...
51nod 1003 階乘後面0的數量
1003 階乘後面0的數量 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 收藏 關注 n的階乘後面有多少個0?6的階乘 1 2 3 4 5 6 720,720後面有1個0。input 乙個數n 1 n 10 9 output 輸出0的數量 input示例 5 ou...
51Nod 1003 階乘後面0的數量
我們知道,10 2 5。每乙個 2 與乙個 5 相乘,結果就增加乙個零。所以求 n 後面的連續零的個數,其實就是求其中相乘的數含因子對 2 與 5 的個數。又因為從1到某個數,所含 2 的個數比 5 多,所以問題就可以進一步簡化到求含有因子5的個數。偽 o nlogn 超時 int n,ans 0 ...