码迷,mamicode.com
首页 > 其他好文 > 详细

CF633B

时间:2018-05-31 21:11:07      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:sum   return   5*   include   ora   16px   text   ret   质因数   

真的是好题啊

题意:给出m<=10^5,求出有多少个数满足其阶乘末尾有且仅有m个0

solution:地理课上发呆胡出来的。像这种一眼暴力都打不了还毒瘤的肯定xi数论啊第一眼还是蒙圈了。

x末尾有m个0,就是x!分解完质因数以后有且仅有m个2*5,因为x!是由1--x的所有数乘起来的,2的次数增长得快,所以只考虑5,然后枚举1-x有1*5(质因数5次数++),2*5(质因数5次数++)。

但这样有个问题,5*5给x!5的次数增加了不是1而是2,5*25给x!5的次数增加了3,所以枚举5*i时还要从i中分解5有几次,累加

 

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int main(){
 5     int m,i,sum=0; cin>>m;
 6     for (i=1;;i++){
 7         int num=0,j=i; 
 8         while (j>=5&&j%5==0) num++,j/=5;
 9         //i可以分解质因数分解出多少个5 
10         sum+=num+1; 
11         if (sum==m){
12             printf("5\n");
13             for (j=5*i;j<=5*i+4;j++)
14                 printf("%d ",j);
15             return 0;
16         }
17         if (sum>m){
18             printf("0"); return 0;
19         }
20     }
21 }

CF633B

标签:sum   return   5*   include   ora   16px   text   ret   质因数   

原文地址:https://www.cnblogs.com/Pedestrian6/p/9118853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!