阶乘的0
阶乘的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
巨坑的这道题目竟然是道数学题
简单来说就是分为两种情况:
1.输入的n小于5,直接输出0
2.输入的n大于5
f(20!) = 4 + f(4!)= 4
4的阶乘小于5,故f(4!) = 0;
f(120!) = 24 + f(24!) = 14 + 4 + f(4!) = 28
#include<iostream>
using namespace std;
int main() {
int N, n;
cin >> N;
while(N--) {
cin >> n;
if(n < 5) cout << "0" << endl;
else {
int t = 0;
while(n >= 5) {
n /= 5;
t += n;
}
cout << t << endl;
}
}
}