传送门

•题意

  给你一个大于 1 的正整数 n;

  它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少。

•题解

把[1,10000]内的素数筛出来,然后对于每个素$P$数遍历找$P_{k}$的$k$,用$ans$来维护最小的$k$

对于大于10000的素数,$(10^{4})^{4}<10^{18}<(10^{4})^{5}$,所以最大是4次方

先看4次方:

若$x^{4}==n$,则$x$一定是素数,为什么是素数?

根据欧拉定理,一个数可以分成若干个素数乘积的形式。如$m=p_{1}^{k1}\cdot p_{2}^{k2}\cdot p_{3}^{k3}\cdot p_{4}^{k4}\cdot p_{5}^{k5}$

假设$p_{1},p_{2},p_{3}$为$10000$以内的素数,$p_{4},p_{5}$为大于$10000$的素数。

由于$n$的$10000$以内的素数都被消去了,现只剩下$p_{4}^{k4}\cdot p_{5}^{k5}=n$

因为$p_{4}^{k4}\cdot p_{5}^{k5}=n=x^{4}$,由上只上限是4, 为了方便设$k4=k5=4$,所以$p_{4}^{4}\cdot p_{5}^{4}$可以合并为$(p_{4}p_{5})^{4}$,也就是$x=(p_{4}p_{5})$这个合数。

但是$p_{4},p_{5}$都是$>10^{4}$,所以$x=(p_{4}p_{5})>10^{8}$,即$n=x^{4}=(p_{4}p_{5})^{4}>10^{18}$,与题意矛盾

再看2次方

若$x^{2}==n$,则$x$可能是合数可能是素数?

  如果是4次方的话肯定不能是2次方,由上只$x$是个素数,那$y=x^{2}$的话,$y$就是合数了,所以2次方4次方只能存在一个

如果不是4次方的话,可以是2次方有两种情况,$x$是素数和$x$是合数,素数符合是明显的,那合数为什么符合呢

仍然以上述例子$m=p_{1}^{k1}\cdot p_{2}^{k2}\cdot p_{3}^{k3}\cdot p_{4}^{k4}\cdot p_{5}^{k5}$

假设$p_{1},p_{2},p_{3}$为$10000$以内的素数,$p_{4},p_{5}$为大于$10000$的素数。

由于$n$的$10000$以内的素数都被消去了,现只剩下$p_{4}^{k4}\cdot p_{5}^{k5}=n$

因为$p_{4}^{k4}\cdot p_{5}^{k5}=n=x^{2}$,由上面上限是4同理知上限是2,为了方便设$k4=k5=2$,所以$p_{4}^{2}\cdot p_{5}^{2}$可以合并为$(p_{4}p_{5})^{2}$,也就是$x=(p_{4}p_{5})$这个合数。对于$p_{4}^{2}$这个素数来说是2,对于$p_{5}^{2}$这个素数来说也是2,对于$(p_{4}p_{5})^{2}$这个合数可以分成$p_{4}^{2} p_{5}^{2}$这两个素数,也是2.

3次方与4次方同理

如果都不是的话,就只剩下一个素数了,那就是1

•代码

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e4;
const int mmaxn=1e6;
int prime[maxn];
bool Mark[maxn+];
int num;
void Prime()
{
for(int i=;i<=maxn;i++)
{
if(Mark[i]==)
prime[num++]=i;
for(int j=;j<num&&prime[j]*i<=maxn;j++)
{
Mark[i*prime[j]]=;
if(i%prime[j]==)
break;
}
}
}
int main()
{
Prime();
int T;
scanf("%d",&T);
while(T--)
{
ll n;
scanf("%lld",&n);
int ans=;
for(int i=;i<num;i++)
{
int cur=;
while(n%prime[i]==)
{
n/=prime[i];
cur++;
}
if(!cur)
continue;
ans=min(ans,cur);
if(ans==||n==)
{
printf("%d\n",ans);
break;
}
}
if(ans==||n==)
continue; ll x=sqrt(sqrt(n));
ll y=sqrt(n); if(x*x*x*x==n)///
ans=min(ans,);
else if(y*y==n)///
ans=;
else///
{
bool flag=false;
ll l=maxn-,r=mmaxn+;
while(r-l>)
{
ll mid=(l+r)>>;
if(mid*mid*mid>n)
r=mid;
else
l=mid;
if(mid*mid*mid==n)
{
flag=true;
ans=min(ans,);
break;
}
}
if(!flag)
ans=;
}
printf("%d\n",ans);
}
}

HDU 6623 Minimal Power of Prime(数学)的更多相关文章

  1. HDU 6623"Minimal Power of Prime"(数学)

    传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 定义 $ans$ 表示最终答案: ①如果 $ans \ge 5 ...

  2. HDU 6623 Minimal Power of Prime

    Time limit 1000 ms Memory limit 65536 kB OS Windows 中文题意 给一个数n,设将n质因数分解后可以得到 \[n=\prod_{i=1}^{\omega ...

  3. 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 ...

  4. 2019杭电多校第四场hdu6623 Minimal Power of Prime

    Minimal Power of Prime 题目传送门 解题思路 先打\(N^\frac{1}{5}\)内的素数表,对于每一个n,先分解\(N^\frac{1}{5}\)范围内的素数,分解完后n变为 ...

  5. [2019杭电多校第四场][hdu6623]Minimal Power of Prime

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6623 题目大意为求一个数的唯一分解的最小幂次.即120=23*31*51则答案为1. 因为数字太大不能 ...

  6. 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 ...

  7. 2019HDU多校Minimal Power of Prime——分段讨论&&思维

    题目 将 $n$($1 < n \leq 10^{18}$)质因数分解,求质因数幂的最小值. 分析 直接质因数分解,不太行. 可以这样想,对小区间质因数分解,n变小了,再枚举答案. 打印1-10 ...

  8. 2019hdu多校 Minimal Power of Prime

    题目链接:Click here 题目大意:求一个数分解质因数后的最小幂指数 Solution: 首先,我们肯定是不能直接暴力求解的 我们先考虑筛出1e4范围以内的所有质数,把x所有这个范围内的质因子筛 ...

  9. 【HDOJ6623】Minimal Power of Prime(Powerful Number)

    题意:给定大整数n,求其质因数分解的最小质数幂 n<=1e18 思路:常规分解算法肯定不行 考虑答案大于1的情况只有3种:质数的完全平方,质数的完全立方,以及p^2*q^3,p,q>=1三 ...

随机推荐

  1. javascript正则表达式和字符串RegExp

    这篇文章主要介绍了javascript正则表达式和字符串RegExp and String(一)的相关资料,需要的朋友可以参考下     前言     正则表达式是javascript非常重要和常用的 ...

  2. 寒哥带你深入了解下Swift中的Value Type

    http://www.cocoachina.com/swift/20150923/13539.html 关于开发到底使用ValueType 值类型还是Reference Type 引用类型,关于这个, ...

  3. 通过 PHP OPcache 提升 Laravel 应用运行速度

    什么是 OPcache 每一次执行 PHP 脚本的时候,该脚本都需要被编译成字节码,而 OPcache 可以对该字节码进行缓存,这样,下次请求同一个脚本的时候,该脚本就不需要重新编译,这极大节省了脚本 ...

  4. 不撞南墙不回头———深度优先搜索(DFS)Oil Deposits

    Oil Deposits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  5. 从零学React Native之08Image组件

    开发过程中, 几乎每个项目都会用到图片. RN就是通过Image组件显示图片.既可以加载网络图片,也可以加载本地资源图片. Image组件必须在样式中声明图片的款和高.如果没有声明,则图片将不会被呈现 ...

  6. mysql数据库之工作流程

    MySQL架构总共四层,在上图中以虚线作为划分. 首先,最上层的服务并不是MySQL独有的,大多数给予网络的客户端/服务器的工具或者服务都有类似的架构.比如:连接处理.授权认证.安全等. 第二层的架构 ...

  7. @codeforces - 913F@ Strongly Connected Tournament

    目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个选手参加了一场竞赛,这场竞赛的规则如下: 1.一开始,所有 ...

  8. CSS常用函数calc等

    >>CSS常用函数<<

  9. [Pytorch]基于混和精度的模型加速

    这篇博客是在pytorch中基于apex使用混合精度加速的一个偏工程的描述,原理层面的解释并不是这篇博客的目的,不过在参考部分提供了非常有价值的资料,可以进一步研究. 一个关键原则:“仅仅在权重更新的 ...

  10. C++高精度加减乘除模板

    其中高精度乘法通过了POJ2389,其他没有测过,不过应该是没有问题的. 其中高精度除法返回一对string,分别表示商和余数. 代码: #include <bits/stdc++.h> ...