传送门

•题意

  给你一个大于 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"(数学)的更多相关文章

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

    传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 把[1,10000]内的素数筛出来,然后对于每个素$P$数遍历 ...

  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. 【模板】树的重心 洛谷P1364 医院设置

    P1364 医院设置 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结点上建立一个医院,使所有居民所走的路程之和为最小,同时约定,相邻接 ...

  2. 实现手机网页调起原生微信朋友圈分享的工具nativeShare.js

    http://www.liaoxiansheng.cn/?p=294 我们知道现在我们无法直接通过js直接跳转到微信和QQ等软件进行分享,但是现在像UC浏览器和QQ浏览器这样的主流浏览器自带一个分享工 ...

  3. cp和mv命令

    注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加.而cp对文件进行复制,文件个数增加了. 一.cp命令 cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录.它可以将 ...

  4. 【祈福】NOIP战后占卜:众星陨落,天命难违

    Day1 加上看题,做完第一题之后我已经只剩两个小时半了. 然后凭着一定要做完第一题和第二题的坚定信念. 我耗到了只剩一个小时半,结果正解还是没想出来. 其实我从只剩两小时的时候,就有了打第二题的暴力 ...

  5. Auto reloading enabled

    在eclipse中集成tomcat来开发时, 如果使用run as模式启动项目的话,tomcat配置Auto reloading enabled,我们修改java文件,项目会重新加载,修改的内容会生效 ...

  6. ios开发使用Basic Auth 认证方式

    http://blog.csdn.net/joonchen111/article/details/48447813 我们app的开发通常有2种认证方式   一种是Basic Auth,一种是OAuth ...

  7. 2018年DDoS攻击全态势:战胜第一波攻击成“抗D” 关键

    2018年,阿里云安全团队监测到云上DDoS攻击发生近百万次,日均攻击2000余次.目前阿里云承载着中国40%网站,为全球上百万客户提供基础安全防御.可以说,阿里云上的攻防态势是整个中国攻防态势的缩影 ...

  8. Hdu 1800 字符串hash

    题目链接 题意: 给出n(n<=3000)个字符串(长度<30,数字组成,肯能存在前导0), 问该序列最少可以分成多少个单调序列.可以转化成求相同字符串的个数的最大值 附上代码: /*** ...

  9. 简单线性回归(最小二乘法)python实现

      简单线性回归(最小二乘法)¶   0.引入依赖¶ In [7]: import numpy as np import matplotlib.pyplot as plt   1.导入数据¶ In [ ...

  10. js原生复习2.0

    // 1.闭包的作用// 实现共有变量,函数累加器的实现// 可以做缓存以及储存结构// 可以实现封装,实现属性私有化// 模块开发,防止全局污染// var name = 123;// var in ...