蓝桥杯打卡Day7


文章目录

  • 阶乘的末尾0
  • 整除问题

一、阶乘的末尾0IO链接

**本题思路:**由于本题需要求阶乘的末尾0,由于我们知道2*5=10可以得到一个0,那么我们就可以找出2的数和5的数,但是由于是阶乘,所以5的数量肯定是小于2的数量,因此我们只需要知道5的数量即可,这里只需要算含有5的次幂的数目即可。

cpp 复制代码
#include <bits/stdc++.h>

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<<cnt<<std::endl;
  return 0;
}

二、整除问题IO链接

**本题思路:**我们可以把 a 给拆分成若干个质因子之积,然后看下 2 ~ n 中包含多少个对应的质因子,就能得出来最多可以整除 a 的多少次方。比如 a 中有质因子p1、p2、p3,2 ~ n 中有对应的质因子、num1、num2 ... 个,那 k 的最大值也就是若干个 num 的最小值。

cpp 复制代码
#include <bits/stdc++.h>

int n,a;
std::vector<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<ans.size();i++)
        res=std::min(res,get_p(n,ans[i][0])/ans[i][1]);
    std::cout<<res<<std::endl;
    return 0;
}
相关推荐
梅茜Mercy1 小时前
数据结构:链表(经典算法例题)详解
数据结构·链表
88号技师1 小时前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
人工智能·算法·matlab·优化算法
IT猿手1 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
青春男大1 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
88号技师1 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
Zer0_on1 小时前
数据结构栈和队列
c语言·开发语言·数据结构
一只小bit1 小时前
数据结构之栈,队列,树
c语言·开发语言·数据结构·c++
我要学编程(ಥ_ಥ)2 小时前
一文详解“二叉树中的深搜“在算法中的应用
java·数据结构·算法·leetcode·深度优先
埃菲尔铁塔_CV算法2 小时前
FTT变换Matlab代码解释及应用场景
算法
许野平3 小时前
Rust: enum 和 i32 的区别和互换
python·算法·rust·enum·i32