Codeforces 633B

来源:互联网 发布:mac版迅雷应版方要求 编辑:程序博客网 时间:2024/06/03 18:45
题意:输入一个m,将所有的满足条件的数输出。条件为它的阶乘后m均为0.
思路:最后一个为数出现0的数是5的阶乘。因为含有5*2=10.所以有一个零。2每个偶数都可以提供。所以记录5出现几次,就有几个零
#include<cstdio>#define ll long longconst int maxn = 1e6+10;int a[maxn];//a[i]代表a[i]的阶乘末尾有几个零 int main(){int m;ll num=0;for(int i=5;i<=maxn;i++)//每次可以视作在原来的基础上乘个i {if(i%5==0){int t=i;while(t%5==0){t/=5;num++;}}a[i]=num;}scanf("%d",&m);int f=0;int i;for(i=0;i<=maxn;i++){if(a[i]==m){f=1;break;}}if(f){printf("5\n");for(int j=0;j<5;j++)printf("%d ",i+j);//每隔5个数多出个0 printf("\n");}elseprintf("0\n");}

原创粉丝点击