2019杭电多校第四场hdu6623 Minimal Power of Prime
Minimal Power of Prime
解题思路
先打\(N^\frac{1}{5}\)内的素数表,对于每一个n,先分解\(N^\frac{1}{5}\)范围内的素数,分解完后n变为m,如果m等于1,那么答案就是\(N^\frac{1}{5}\)内分解的素数里的最小数量k。否则,继续分解,此时用来分解的质数都是大于\(N^\frac{1}{5}\)的,所以最多有4个质数相乘,所以只有三种情况:\(P^4\),\(P^3\),\(P^2\),\(P^2*Q^2\),以及答案为1的情况(P,Q为大于\(N^\frac{1}{5}\)的质数)。对于前两种情况,分别看\(m^\frac{1}{4}\),\(m^\frac{1}{3}\)是否是整数,对于三四种情况,其实是一样的,只要看\(m^\frac{1}{2}\)是不是整数就行了,前四种情况都不是,那么答案就是1。
代码如下
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
inline int read(){
int res = 0, w = 0; char ch = 0;
while(!isdigit(ch)){
w |= ch == '-', ch = getchar();
}
while(isdigit(ch)){
res = (res << 3) + (res << 1) + (ch ^ 48);
ch = getchar();
}
return w ? -res : res;
}
ll p(ll a, int b)
{
ll ans = 1;
for(int i = 1; i <= b; i ++)
ans *= a;
return ans;
}
int main()
{
int t;
t = read();
vector<int> vec;
for(int i = 2; i <= 4000; i ++){
bool flg = true;
for(int j = 2; j <= sqrt(i); j ++){
if(i % j == 0){
flg = false;
break;
}
}
if(flg)
vec.push_back(i);
}
while(t --){
ll n;
scanf("%lld", &n);
int ans = 100;
for(int i = 0; i < vec.size(); i ++){
int t = vec[i];
int cnt = 0;
while(n % t == 0){
n /= t;
++cnt;
}
if(cnt)
ans = min(ans, cnt);
}
if(n == 1)
printf("%d\n", ans);
else {
for(int i = 4; i >= 1; i --){
if(i == 1)
printf("1\n");
else {
ll x = max((ll)pow(n, 1.0/i) - 5, 1LL);
bool flg = true;
ll m = p(x, i);
while(m < n){
++ x;
m = p(x, i);
}
if(m == n){
printf("%d\n", min(ans, i));
break;
}
}
}
}
}
return 0;
}
2019杭电多校第四场hdu6623 Minimal Power of Prime的更多相关文章
- [2019杭电多校第四场][hdu6623]Minimal Power of Prime
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6623 题目大意为求一个数的唯一分解的最小幂次.即120=23*31*51则答案为1. 因为数字太大不能 ...
- [2019杭电多校第四场][hdu6621]K-th Closest Distance(主席树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6621 题意为求区间[l,r]内第k小|a[i]-p|的值. 可以二分答案,如果二分的值为x,则判断区间 ...
- [2019杭电多校第四场][hdu6616]Divide the Stones
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6616 题意是说n个数分别为1-n,将n个数分成k堆,能否满足每堆个数相等,数值之和相等.保证n%k=0 ...
- [2019杭电多校第四场][hdu6614]AND Minimum Spanning Tree(贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6614 题目大意是有一张n个点的完全图,n个点点权为1-n,边权为两点点权按位与(&).求最小生 ...
- 2019杭电多校第四场hdu6621 K-th Closest Distance(二分答案+主席树)
K-th Closest Distance 题目传送门 解题思路 二分答案+主席树 先建主席树,然后二分答案mid,在l和r的区间内查询[p-mid, p+mid]的范围内的数的个数,如果大于k则说明 ...
- 杭电多校第四场 E Matrix from Arrays
Problem E. Matrix from Arrays Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 ...
- 杭电多校第四场 Problem K. Expression in Memories 思维模拟
Problem K. Expression in Memories Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262 ...
- 2019杭电多校第七场 HDU - 6656 Kejin Player——概率&&期望
题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...
- 2019 杭电多校第八场 HDU - 6665 Calabash and Landlord 两矩形分平面
题意 给出两个矩形,问这两个矩形把平面分成了几部分. 分析 不需要什么高级技能,只需 “简单” 的分类讨论. (实在太难写了,对拍找出错误都不想改 推荐博客,其中有个很好的思路,即只讨论答案为2,3, ...
随机推荐
- Unity中文本AssetBundle的解析
Unity在其安装目录下提供了许多实用的小工具,就存放在unity安装目录下的:Editor/Data/Tools, 其中该路径下的WebExtract.ext和binary2text.exe可以用 ...
- linux 部署系统通过SecureCRT启动tomcat 控制台中文乱码
查资料又是查了半天 首先 查看linux 当前系统字符集命令 echo $LANG 查看linux 当前系统语言 locale 网上说的又是下中文包,又是改临时语言,这些不能一概而论,我也觉得我不是中 ...
- MySQL的共享锁与排它锁编码演示
一.行锁之MySQL 使用SELECT ... FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的Tansaction isolation level 为REPEA ...
- Linux安装配置nfs实现共享远程目录
1. 服务端安装nfs yum -y install nfs-utils rpcbind 2.编辑/etc/exports /etc/exports文件内容格式: <输出目录> [客户端1 ...
- java中垃圾收集的方法有哪些?
java中垃圾收集的方法有哪些? 一.引用计数算法(Reference Counting) 介绍:给对象添加一个引用计数器,每当一个地方引用它时,数据器加1:当引用失效时,计数器减1:计数器为0的即可 ...
- 如何减少代码中的if-else嵌套
实际项目中,往往有大量的if-else语句进行各种逻辑校验,参数校验等等,大量的if-else,语句使代码变得臃肿且不好维护,本篇文章结合我自己的经验,就减少if-else语句给出以下几种方案,分别适 ...
- 【知识强化】第六章 应用层 6.3 文件传输协议FTP
这节课我们来学习一下文件传输协议FTP. 我们知道一个文件的传输过程呢一定需要协议的规定,那在文件传送协议这一块呢有很多个协议.比较主要的两个一个是文件传送协议FTP,一个是简单文件传送协议TFTP. ...
- C语言实现Windows下获取IP和MAC地址。
C语言实现Windows下获取IP和MAC地址. #include <winsock2.h> #include <stdio.h> #include <stdlib.h& ...
- 三、IDS4建立authorization server
建立authorization server 一.环境搭建 1.创建项目 2.引用NuGet的identityserver4 3.配置asp.net core 管道 打开Startup.cs, 编辑C ...
- go语言从例子开始之Example23.通道缓冲
默认通道是 无缓冲 的,这意味着只有在对应的接收(<- chan)通道准备好接收时,才允许进行发送(chan <-).可缓存通道允许在没有对应接收方的情况下,缓存限定数量的值. 不支持缓冲 ...