CF633B

Posted pedestrian6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF633B相关的知识,希望对你有一定的参考价值。

真的是好题啊

题意:给出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的主要内容,如果未能解决你的问题,请参考以下文章

如何从后台弹出片段

cf 模拟

CF1435 游记

无法解析符号 c882c94be45fff9d16a1cf845fc16ec5

本人想学习破解技术但是看不懂反汇编代码!求助!!

微信小程序代码片段