Manthan, Codefest 16 -B. A Trivial Problem
time limit per test | 2 seconds |
---|---|
memory limit per test | 256 megabytes |
input standard | input |
output standard | output |
Mr. Santa asks all the great programmers of the world to solve a trivial problem. He gives them an integer m and asks for the number of positive integers n, such that the factorial of n ends with exactly m zeroes. Are you among those great programmers who can solve this problem?
Input
The only line of input contains an integer m (1 ≤ m ≤ 100 000) — the required number of trailing zeroes in factorial.
Output
First print k — the number of values of n such that the factorial of n ends with m zeroes. Then print these k integers in increasing order.
Examples
input
1
output
5
5 6 7 8 9
input
5
output
0
Note
The factorial of n is equal to the product of all integers from 1 to n inclusive, that is n! = 1·2·3·…·n.
In the first sample, 5! = 120, 6! = 720, 7! = 5040, 8! = 40320 and 9! = 362880.
判断阶乘的结果结尾零的个数为m的数
打表即可
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <string>
#include <stack>
#include <queue>
#include <vector>
#include <set>
#include <list>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const double eps = 1e-6;
const double PI = acos(-1.0);
int num[500000];
int a[11111];
int ok(int n)
{
int ans = 0;
while(n)
{
n/=5;
ans+=n;
}
return ans;
}
int main()
{
for(int i = 0;i<500000;i++)
{
num[i] = ok(i);
}
int n,Num;
cin>>n;
Num = 0;
for(int i=0;i<500000;i++)
{
if(num[i]==n)
{
a[Num++] = i;
}
}
printf("%d\n",Num);
if(Num)
{
for(int i=0;i<Num;i++)
{
if(i) printf(" ");
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}