A Trivial Problem
ps:找规律的大水题,
首先我们想一下,什么时候一个数的后面会出现0,
可以发现如果阶乘中有2*5的话,就会出现一个10,所以后面会出现一个0,然而5又比2大,所以如果有5出现肯定就已经有2出现了,那么显然我们只需要找阶乘因子中5的个数就好了
代码:
#include<stdio.h>
#define maxn 1000000+10
int a[maxn]={0},b[10];//a[i]储存i的阶乘后面有几个0
int main()
{
int k=0;
for(int i=5; i<maxn; i++)
{
if(i%5==0)
{
int t=i;
while(t%5==0)
{
t/=5;
k++;
}
}
a[i]=k;
}
int m,ps=0;
scanf("%d",&m);
for(int i=1;i<maxn;i++)
{
if(a[i]==m)
b[ps++]=i;
}
printf("%d\n",ps);
for(int i=0;i<ps;i++)
printf("%d ",b[i]);
return 0;
}