HDU 6623 Minimal Power of Prime(数学)
•题意
给你一个大于 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(数学)的更多相关文章
- HDU 6623"Minimal Power of Prime"(数学)
传送门 •题意 给你一个大于 1 的正整数 n: 它可以分解成不同的质因子的幂的乘积的形式,问这些质因子的幂中,最小的幂是多少. •题解 定义 $ans$ 表示最终答案: ①如果 $ans \ge 5 ...
- 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三 ...
随机推荐
- windows.open window.location.href的用法和区别
window.location.href 只能在当前页面打开,不能用新窗口打开 windows.open("URL","窗口名称","窗口外观设定& ...
- SpingMVC ModelAndView, Model,Control以及参数传递总结
1.web.xml 配置: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <servlet> <servlet-name>dispatcher& ...
- HDU-1160_FatMouse's Speed
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Sp ...
- 【NS2】新协议的添加示例(转载)
1. 下表显示了 NS2 和 TCP/IP.OSI七层网络结构的大致对应关系(这个表很有好处哦) TCP NS2 OSI 应用层 应用层 应用层 表示层 会话 ...
- Python中的简单实现UDP协议没有粘包问题
服务端: import socket server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #数据报协议->udp server.bind ...
- Uva 10334
UVa 10334 这道题几乎和UVa 495是一样的. #include<iostream> #include<cstdio> #define mod 1000000 usi ...
- 2019-11-20-dotnet-Blazor-用-C#-控制界面行为
title author date CreateTime categories dotnet Blazor 用 C# 控制界面行为 lindexi 2019-11-20 18:26:25 +0800 ...
- 2019-2-24-VisualStudio-过滤输出窗口文本
title author date CreateTime categories VisualStudio 过滤输出窗口文本 lindexi 2019-2-24 11:10:7 +0800 2019-0 ...
- HDFS命令行界面
- 威胁快报|新兴挖矿团伙借助shodan作恶,非web应用安全再鸣警钟
近日,阿里云安全发现了一个使用未授权访问漏洞部署恶意Docker镜像进行挖矿的僵尸网络团伙.我们给这一团伙取名为Xulu,因为该团伙使用这个字符串作为挖矿时的用户名. Xulu并不是第一个攻击Dock ...