一.题目链接:
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'
}