
本题思路:由于本题需要求阶乘的末尾0,由于我们知道2*5=10可以得到一个0,那么我们就可以找出2的数和5的数,但是由于是阶乘,所以5的数量肯定是小于2的数量,因此我们只需要知道5的数量即可,这里只需要算含有5的次幂的数目即可。
- #include
-
- int main()
- {
- std::ios::sync_with_stdio(false);
- std::cin.tie(nullptr);std::cout.tie(nullptr);
-
- int n;
- std::cin>>n;
-
- //这里我们可以知道2和5的乘积能得到0,那么我们可以知道某个数的阶乘中2这个质因子的次数肯定大于5这个质因子出现的次数
- int cnt=0;
- while(n){
- cnt+=n/5;
- n/=5;
- }
-
- std::cout<
- return 0;
- }
二、整除问题IO链接
本题思路:我们可以把 a 给拆分成若干个质因子之积,然后看下 2 ~ n 中包含多少个对应的质因子,就能得出来最多可以整除 a 的多少次方。比如 a 中有质因子p1、p2、p3,2 ~ n 中有对应的质因子、num1、num2 … 个,那 k 的最大值也就是若干个 num 的最小值。
- #include
-
- int n,a;
- std::vector
int>> ans; -
- void divide(int n)
- {
- for(int i=2;i<=n/i;i++){
- if(n%i==0){
- int s=0;
- while(n%i==0){
- s++;
- n/=i;
- }
- ans.push_back({i,s});
- }
-
- }
-
- if(n>1) ans.push_back({n,1});
-
- }
-
- int get_p(int n,int p)
- {
- int cnt=0;
- while(n){
- cnt+=n/p;
- n/=p;
- }
- return cnt;
- }
-
- int main()
- {
- std::ios::sync_with_stdio(false);
- std::cin.tie(nullptr);std::cout.tie(nullptr);
-
- std::cin>>n>>a;
-
- divide(a);
- int res=INT_MAX;
- for(int i=0;i
size();i++) - res=std::min(res,get_p(n,ans[i][0])/ans[i][1]);
- std::cout<
- return 0;
- }
-
相关阅读:
ps神经网络滤镜安装包,ps神经网络滤镜用不了
抖店token的生成和刷新的实际开发笔记
developer.android.com在国内无法正常访问解决方法
Debian11之基于kubeadm安装K8S集群
Go 语言中的日期与时间
介绍Node.js中fs模块 代码和注释。
docker容器里面的java进程内存泄露排查
spark完全分布式部署
躲避小行星游戏
MySQL8.0 索引优化-invisible index
-
原文地址:https://blog.csdn.net/qq_67458830/article/details/132829580