技巧 逐个算 期末致死题-------有多少个0

Problem M: 有多少个0

Time Limit: 1 Sec  Memory Limit: 16 MB
Submit: 438  Solved: 57
[Submit][Status]

Description

         求1*2*3*……*n的乘积以多少个0结尾。

Input

输入为多行,至EOF结束。每行为一个整数n,n<=100000。

Output

输出每个n对应的结尾0的个数。

Sample Input

10 100 1000 10000

Sample Output

2 24 249 2499
题解:本来一个水题,期末考试的时候只想考虑把数算出来,看样例感觉跟4有关,所以沉入无法自拔。实际上出0是2和5的乘机,即可以理解为2和5的最小值,即等价于5的最小值。那么可以转化为含有因子5的个数,还是自己菜。orz
ac代码
#include<iostream>
using namespace std;
int main()
{
    int t,n,num;
    while(cin>>n)
    {
        num=0;
        for(int i=1;i<=n;i++)
        {
            t=i;
            while(t%5==0)
            {
                t/=5;
                num++;
            }
        }
        cout<<num<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Joe2019/p/12669002.html