HDU 6623"Minimal Power of Prime"(数学)
•题意
给你一个大于 1 的正整数 n;
它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少。
•题解
定义 $ans$ 表示最终答案;
①如果 $ans \ge 5$:
那么,肯定有 $n=p^{ans}\ ,\ p \le \sqrt[{ans}]{n}$,也就是说 $\ p \le 10^{\frac{18}{5}}$;
所以,我们可以提前预处理出 $[1,10000]$ 内的素数,筛出 $n$ 中属于 $[1,10000]$ 内的质因子;
如果在这个过程中出现 $n=1$ 或者 $ans=1$,那么直接返回 $ans$ 即可;
如果筛完 $[1,10000]$ 内的素数后,$n > 1$,那么,就有如下情况:
(1)存在质数 p,满足 p > 10000 并且 n 只能分解出一个 p,此时应输出 1;
(2)存在质数 p,q,满足 p > 10000 , q > 10000,有 $n = p^2$ 或 $n = p^2 \cdot q^2$,对于这种情况,$n$ 肯定是个完全平方数;
(3)存在质数 p,满足 p > 10000,并且有 $n=p^3$,这种情况下,$n$ 肯定是个立方数;
(4)存在质数 p,满足 p > 10000,并且有 $n=p^4$;
如果情况(1)成立,那么,情况(2)(3)(4)肯定不成立,但是情况(1)可能不好直接判断;
那么,我们可以先判断情况(4)(2)(3)是否成立,如果不成立,那么(1)肯定成立;
疑惑(1):如果 $(\sqrt[4]{n})^4=n$,那为什么一定有 $\sqrt[4]{n}$ 为素数呢?
定义 $x=\sqrt[4]{n}$,那么有 $x \le 10^{\frac{18}{4}}$;
如果 $x$ 为合数,那么势必存在某个大于 1 因子 f,$f \le \sqrt{x} < 10^4$;
但,来到此步的条件是 $n$ 中所有属于 $[1,10000]$ 内的质因子已被筛走,所以,是不存满足条件的 $f$ 的;
所以说,$x$ 一定是个素数;
疑惑(2):为什么要先判断情况(4)再判断情况(2):
因为满足情况(4)肯定满足情况(2),但是此时满足情况(2)的因子就不是质因子了;
•Code
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mem(a,b) memset(a,b,sizeof(a))
const int N=1e4; ll n;
int cnt;
int prime[N];
bool isPrime[N+]; void Prime()
{
cnt=;
mem(isPrime,true);
isPrime[]=false; for(int i=;i <= N;++i)
{
if(isPrime[i])
prime[++cnt]=i; int x;
for(int j=;j <= cnt && (x=i*prime[j]) <= N;++j)
{
isPrime[x]=false; if(i%prime[j] == )
break;
}
}
}
bool Calc(ll x)
{
int l=,r=(int)1e6+;
while(r-l > )
{
ll mid=l+((r-l)>>);
if(mid*mid*mid > x)
r=mid;
else
l=mid; if(mid*mid*mid == x)
return true;
}
return false;
}
int Solve()
{
int ans=;
for(int i=;i <= cnt;++i)
{
int k=;
while(n%prime[i] == )
{
k++;
n /= prime[i];
}
if(k)
ans=min(ans,k); if(n == || ans == )
return ans;
} ll x=sqrt(sqrt(n));
ll y=sqrt(n); if(x*x*x*x == n)
ans=min(ans,);
else if(y*y == n)
ans=min(ans,);
else if(Calc(n))
ans=min(ans,);
else
ans=; return ans;
}
int main()
{
Prime(); int T;
scanf("%d",&T);
while(T--)
{
scanf("%lld",&n);
printf("%d\n",Solve());
}
return ;
}
HDU 6623"Minimal Power of Prime"(数学)的更多相关文章
- HDU 6623 Minimal Power of Prime(数学)
传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 把[1,10000]内的素数筛出来,然后对于每个素$P$数遍历 ...
- HDU 6623 Minimal Power of Prime
Time limit 1000 ms Memory limit 65536 kB OS Windows 中文题意 给一个数n,设将n质因数分解后可以得到 \[n=\prod_{i=1}^{\omega ...
- HDU 6623 Minimal Power of Prime(思维)题解
题意: 已知任意大于\(1\)的整数\(a = p_1^{q_1}p_2^{q_2} \cdots p_k^{q_k}\),现给出\(a \in [2,1e18]\),求\(min\{q_i\},q ...
- 2019杭电多校第四场hdu6623 Minimal Power of Prime
Minimal Power of Prime 题目传送门 解题思路 先打\(N^\frac{1}{5}\)内的素数表,对于每一个n,先分解\(N^\frac{1}{5}\)范围内的素数,分解完后n变为 ...
- [2019杭电多校第四场][hdu6623]Minimal Power of Prime
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6623 题目大意为求一个数的唯一分解的最小幂次.即120=23*31*51则答案为1. 因为数字太大不能 ...
- 2019 Multi-University Training Contest 4 - 1010 - Minimal Power of Prime
http://acm.hdu.edu.cn/showproblem.php?pid=6623 题意,给50000个1e18级别的数N,求它质因数分解里面的最小的指数(不算0) 比赛的时候给划了一个1e ...
- 2019HDU多校Minimal Power of Prime——分段讨论&&思维
题目 将 $n$($1 < n \leq 10^{18}$)质因数分解,求质因数幂的最小值. 分析 直接质因数分解,不太行. 可以这样想,对小区间质因数分解,n变小了,再枚举答案. 打印1-10 ...
- 2019hdu多校 Minimal Power of Prime
题目链接:Click here 题目大意:求一个数分解质因数后的最小幂指数 Solution: 首先,我们肯定是不能直接暴力求解的 我们先考虑筛出1e4范围以内的所有质数,把x所有这个范围内的质因子筛 ...
- 【HDOJ6623】Minimal Power of Prime(Powerful Number)
题意:给定大整数n,求其质因数分解的最小质数幂 n<=1e18 思路:常规分解算法肯定不行 考虑答案大于1的情况只有3种:质数的完全平方,质数的完全立方,以及p^2*q^3,p,q>=1三 ...
随机推荐
- PHP7捕获错误异常方法
这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获.如果没有匹配的 catch 块,则调用异常处理函数(事先通过 set_exception_h ...
- openssl生成证书 - CSDN博客
大家都可以生成公钥.私钥对,无法确认公钥对到底是谁的. 如果能够确定公钥到底是谁的,就不会有这个问题了.例如,如果收到“黑客”冒充“服务器”发过来的公钥,经过某种检查,如果能够发现这个公钥不是“服务器 ...
- ls command not found
编辑profile文件没有写正确,导致在命令行下 ls等命令不能够识别. 在命令行下打入下面这段就可以了 export PATH=/usr/local/sbin:/usr/local/bin:/sbi ...
- Spring → 03:核心机制
一.控制反转 1.1.控制反转的概念 (1).Inverse of Controller被称为控制反转或反向控制,其实真正体现的是“控制转移”.(2).所谓的控制指的是负责对象关系的指定.对象创建.初 ...
- hdu3917 最大权闭合图
题意:有N个城市,M个公司.现在需要建立交通是获得的利益最大.如果2个公司A,B, A修的路为Xa->Ya,B的路为Xb->Yb,如果Ya==Xb,那么这2个公司有关系. 对于每个公司都有 ...
- HDU - 4788 Hard Disk Drive (成都邀请赛H 水题)
HDU - 4788 Hard Disk Drive Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I ...
- iOS 开发该选择Blocks还是Delegates
http://www.cocoachina.com/ios/20150925/13525.html 前文:网络上找了很多关于delegation和block的使用场景,发现没有很满意的解释,后来无意中 ...
- python 字符串匹配算法设计
- Directx11学习笔记【八】 龙书D3DApp的实现
原文:Directx11学习笔记[八] 龙书D3DApp的实现 directx11龙书中的初始化程序D3DApp跟我们上次写的初始化程序大体一致,只是包含了计时器的内容,而且使用了深度模板缓冲. D3 ...
- 关于inflate的第3个参数
关于inf 方法 inflate(int resource, ViewGroup root, boolean attachToRoot) 中,前连个参数都好理解,我比较费解的是第3个参数. 文档中的解 ...