牛客 - 阶乘(唯一分解定理)
题目链接:点击查看
题目大意:给出一个 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] C++题解/答案
牛客题霸 [有关阶乘的两个问题1] C++题解/答案 题目描述 给定一个非负整数N,返回N!结果的末尾为0的数量 题解: 这个题有技巧 10=2*5,也就是说有一对2和5就会贡献一个0,但是2的数量远 ...
- 阶乘约数(唯一分解定理+约数定理)
阶乘约数 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 定义阶乘 n! = 1 × 2 × 3 × · · · × n! 请问 100! (100 的阶乘)有多少 ...
- 牛客小白月赛5 D.阶乘(factorial)
牛客小白月赛5 D.阶乘(factorial) 题目链接 题目描述 求 1!∗2!∗3!∗⋯∗n!1!*2!*3!*\cdots*n!1!∗2!∗3!∗⋯∗n! 的末尾有多少 000 ? 输入描述: ...
- 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱
今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...
- 2020牛客暑期多校训练营(第四场)
2020牛客暑期多校训练营(第四场) 这场属实有点难受 文章目录 A Ancient Distance B Basic Gcd Problem 题目 代码: C Count New String D ...
- 【牛客 - 551F】CSL 的神奇序列(推公式,猜结论,母函数)
题干: 链接:https://ac.nowcoder.com/acm/contest/551/F 来源:牛客网 题目描述 CSL 有一个神奇的无穷实数序列,他的每一项满足如下关系: 对于任意的正整数 ...
- “蔚来杯“2022牛客暑期多校训练营10,签到题HFIE
题号 标题 已通过代码 通过率 团队的状态 A Everlasting Transeunt 点击查看 6/42 B Fall Guys-Perfect Match 点击查看 6/115 C Magic ...
- 牛客j寒假算法训练营一(待补充)
数学场,我只写了四题没想到rank都有121,和我一起打的帅辉四题居然rank38 orz,强巨三小时5题rank18(膜啊膜) A 小a的计算器 链接:https://ac.nowcoder.com ...
- 2021牛客寒假算法基础集训营5 比武招亲(上)(组合数)
链接:https://ac.nowcoder.com/acm/contest/9985/B 来源:牛客网 题目描述 众所周知,天姐姐只喜欢天下最聪明的人,为了找到这样的人,她决定比武招亲! 只见天姐姐 ...
最新文章
- leetcode算法题--两数相加 II
- Python面向对象2:类与对象的成员分析及self
- java 中遍历目录下所有文件
- 【EL表达式】EL 表达式学习
- jbod ugood 磁盘驱动状态_如何检查Mac磁盘空间,mac磁盘空间其他怎么清理
- 设计模式的功力长了!
- 手rm-linux联网后自动dhcp,Linux操作系统下DHCP基础配置
- Oracle/MySQL decimal/int/number 转字符串
- mysql主从表单如何设计_如何快速的10分钟制作一张主从表单及功能
- 微信小程序云开发教程-JavaScript入门(6)-常用函数
- Appium 常用操作
- 国产UOS系统之——安装N卡驱动(多屏显示)
- U盘中病毒后文件变为屏幕保护程序恢复方法
- 数据结构总结---1.总概
- 小程序身份证号码保留前后4位其他用“*”代替
- 第三天,【1124】接口,注册,登录
- 史上最牛最强的linux学习笔记 10.shell基础
- 华为云-实时流计算服务CS
- SpringBoot 生成数据库设计文档工具
- CentOS 7 搭建 Keepalived+LVS NAT模式 高可用集群
热门文章
- 编写一个函数判断一个整数是不是素数c语言,设计一个函数,用来判断一个整数是否为素数。代码如下,按要求在空白处填写适当的表达式或语句,使...
- mysql视图子查询_mysql创建视图不能包涵子查询的解决办法。View's SELECT contains a subquery in the FROM clause...
- CORS 跨域-哪些操作受到同源限制
- maven工程servlet实例之jar包冲突解决
- 缓存-SpringCache-自定义缓存配置
- Java高并发程序设计前言
- SpringBoot 基础拦截器
- 由若干计算机网络连接而成的网络,计算机网络复习大纲(中山大学)
- s5原生android 5.0,三星Galaxy S5升级Android 5.0:美味棒棒糖
- oracle11 不更新记录,oracle11g 使用first_value获取表中不连接的ID号及掉失记录数量...