一.题目链接:

CodeForces-633B

二.题目大意:

给出一个数 n ,求哪些数阶乘的结尾 0 的个数为 n.

三.分析:

10 = 2 × 5 && 5 的个数一定小于 2 的个数.

∴ 阶乘的结尾 0 的个数 == 从 1 - n 中因子为 5 的个数.

注意:25 = 5 * 5;

           50 = 5 * 5 * 2;

           75 = 5 * 5 * 5;

    详见代码.

四.代码实现:

#include <set>
#include <map>
#include <ctime>
#include <queue>
#include <cmath>
#include <stack>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define eps 1e-6
#define PI acos(-1.0)
#define ll long long int
using namespace std;

int main()
{
    int n;
    scanf("%d", &n);
    int cnt = 0;
    vector <int> v;
    for(int i = 1; i < 1e6; ++i)
    {
        int k = i;
        while(!(k % 5))
        {
            k /= 5;
            cnt++;
        }
        if(cnt == n)
            v.push_back(i);
        if(cnt > n)
            break;
    }
    bool flag = 0;
    vector <int> :: iterator iter;
    printf("%d\n", v.size());
    for(iter = v.begin(); iter != v.end(); ++iter)
    {
        if(flag)
            printf(" ");
        printf("%d", *iter);
        flag = 1;
    }
    return 0'
}