阶乘的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的倍数即可。