nyoj 階乘0
阿新 • • 發佈:2018-03-15
log name iostream gpo using n! += spa table
階乘的0
時間限制:3000 ms | 內存限制:65535 KB 難度:3- 描述
- 計算n!的十進制表示最後有多少個0
- 輸入
- 第一行輸入一個整數N表示測試數據的組數(1<=N<=100)
每組測試數據占一行,都只有一個整數M(0<=M<=10000000) - 輸出
- 輸出M的階乘的十進制表示中最後0的個數
比如5!=120則最後的0的個數為1 - 樣例輸入
-
6 3 60 100 1024 23456 8735373
- 樣例輸出
-
0 14 24 253 5861 2183837
#include<iostream>
using namespace std;
int main()
{
int n,m;
cin>>n;
while(n--)
{
int ans=0;
cin>>m;
while(m)
{
ans+=m/5;
m/=5;
}
cout<<ans<<endl;
}
return 0;
}思路:
在計算階乘的時候,2*5會出現0,所以解題的關鍵在於計算2和5的對數,因為5的個數比2的個數多,所以求5的個數即可
如:100中計算是5的倍數則用100/5,又因為5 10 15這算是一個5, 25 50 100這算是兩個5 75 150這算是3個5,
所以計算5的倍數+25的倍數+75的倍數即可。
nyoj 階乘0