题目链接:点击查看

题目大意:给出一个 p ,求出最小的 n! 使得 p 可以整除 n!

题目分析:因为 p 高达 1e9 ,可以考虑sqrt(n)的算法,也就是唯一分解定理了,分解之后对于每个质因子,我们可以单独讨论,对于某个质因子 p[ i ] ,记录其在 p 中的出现次数 num[ i ] ,我们现在只需要找到一个最小的 k ,使得 k! 内含有大于等于 num[ i ] 个 质因子p[ i ] 即可,然后用答案维护一下 k 的最大值就是答案了

这样问题就转换为了如何找到这个最小的 k ,这里提供两种思路:

第一种思路就是直接二分,因为显然此处的 k 具有单调性,我们的check函数也只需要找 [ 1 , k ] 内一共含有多少个 p[ i ] 就好了

第二种思路就是直接枚举,因为如果都是基于 2 这个质因子,那么 num 最多也只有  30 ,所以不难看出,所有质因子数量之和一定是小于 30 的,这样我们就可以直接枚举了,对于某个质因子 p[ i ] ,每次都加上 p[ i ] 然后计算答案就好了

代码:这里给出第二种思路实现

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;int main()
{
#ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){int n;scanf("%d",&n);int ans=-1;for(int i=2;i*i<=n;i++)if(n%i==0){int cnt=0;while(n%i==0){n/=i;cnt++;}int k=0;for(int j=i;;j+=i)//枚举最小的 k {int num=j;while(num%i==0){num/=i;k++;}if(k>=cnt){ans=max(ans,j);break;}}}printf("%d\n",max(ans,n));}return 0;
}

牛客 - 阶乘(唯一分解定理)相关推荐

  1. 牛客题霸 [有关阶乘的两个问题1] C++题解/答案

    牛客题霸 [有关阶乘的两个问题1] C++题解/答案 题目描述 给定一个非负整数N,返回N!结果的末尾为0的数量 题解: 这个题有技巧 10=2*5,也就是说有一对2和5就会贡献一个0,但是2的数量远 ...

  2. 阶乘约数(唯一分解定理+约数定理)

    阶乘约数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 定义阶乘 n! = 1 × 2 × 3 × · · · × n! 请问 100! (100 的阶乘)有多少 ...

  3. 牛客小白月赛5 D.阶乘(factorial)

    牛客小白月赛5 D.阶乘(factorial) 题目链接 题目描述 求 1!∗2!∗3!∗⋯∗n!1!*2!*3!*\cdots*n!1!∗2!∗3!∗⋯∗n! 的末尾有多少 000 ? 输入描述: ...

  4. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

  5. 2020牛客暑期多校训练营(第四场)

    2020牛客暑期多校训练营(第四场) 这场属实有点难受 文章目录 A Ancient Distance B Basic Gcd Problem 题目 代码: C Count New String D ...

  6. 【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)

    题干: 链接:https://ac.nowcoder.com/acm/contest/551/F 来源:牛客网 题目描述 CSL 有一个神奇的无穷实数序列,他的每一项满足如下关系: 对于任意的正整数 ...

  7. “蔚来杯“2022牛客暑期多校训练营10,签到题HFIE

    题号 标题 已通过代码 通过率 团队的状态 A Everlasting Transeunt 点击查看 6/42 B Fall Guys-Perfect Match 点击查看 6/115 C Magic ...

  8. 牛客j寒假算法训练营一(待补充)

    数学场,我只写了四题没想到rank都有121,和我一起打的帅辉四题居然rank38 orz,强巨三小时5题rank18(膜啊膜) A 小a的计算器 链接:https://ac.nowcoder.com ...

  9. 2021牛客寒假算法基础集训营5 比武招亲(上)(组合数)

    链接:https://ac.nowcoder.com/acm/contest/9985/B 来源:牛客网 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐 ...

最新文章

  1. leetcode算法题--两数相加 II
  2. Python面向对象2:类与对象的成员分析及self
  3. java 中遍历目录下所有文件
  4. 【EL表达式】EL 表达式学习
  5. jbod ugood 磁盘驱动状态_如何检查Mac磁盘空间,mac磁盘空间其他怎么清理
  6. 设计模式的功力长了!
  7. 手rm-linux联网后自动dhcp,Linux操作系统下DHCP基础配置
  8. Oracle/MySQL decimal/int/number 转字符串
  9. mysql主从表单如何设计_如何快速的10分钟制作一张主从表单及功能
  10. 微信小程序云开发教程-JavaScript入门(6)-常用函数
  11. Appium 常用操作
  12. 国产UOS系统之——安装N卡驱动(多屏显示)
  13. U盘中病毒后文件变为屏幕保护程序恢复方法
  14. 数据结构总结---1.总概
  15. 小程序身份证号码保留前后4位其他用“*”代替
  16. 第三天,【1124】接口,注册,登录
  17. 史上最牛最强的linux学习笔记 10.shell基础
  18. 华为云-实时流计算服务CS
  19. SpringBoot 生成数据库设计文档工具
  20. CentOS 7 搭建 Keepalived+LVS NAT模式 高可用集群

热门文章

  1. 编写一个函数判断一个整数是不是素数c语言,设计一个函数,用来判断一个整数是否为素数。代码如下,按要求在空白处填写适当的表达式或语句,使...
  2. mysql视图子查询_mysql创建视图不能包涵子查询的解决办法。View's SELECT contains a subquery in the FROM clause...
  3. CORS 跨域-哪些操作受到同源限制
  4. maven工程servlet实例之jar包冲突解决
  5. 缓存-SpringCache-自定义缓存配置
  6. Java高并发程序设计前言
  7. SpringBoot 基础拦截器
  8. 由若干计算机网络连接而成的网络,计算机网络复习大纲(中山大学)
  9. s5原生android 5.0,三星Galaxy S5升级Android 5.0:美味棒棒糖
  10. oracle11 不更新记录,oracle11g 使用first_value获取表中不连接的ID号及掉失记录数量...