2019杭电多校第四场
Minimal Power of Prime
哭死,以为是米勒拉宾和扑拉德诺,结果是一个思维题,对不起队友啊,优化五小时,优化不出来
其实就是先对一个数,把1e4以前的质数因子全部先找一遍,然后再对大于1e4的因子,再查询,最大的指数是4,所以只有可能是4,3,2,1次
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN=1e4+10;
int check[MAXN];
int prime[MAXN];
int sum=100;
LL n;
int tot=0;
void getprime()
{
int nn=1e4;
check[0]=check[1]=1;
for(int i=2;i<=nn;i++){
if(check[i]==0) prime[++tot]=i;
for(int j=1;j<=tot;j++){
if(i*prime[j]>nn) break;
check[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
LL two(LL n){
LL l=1,r=(LL)pow(n*1.0, 1.0 / 3) + 1,mid;
while(l<=r){
mid=(l+r)>>1;
if(mid*mid*mid==n) return mid;
else if(mid*mid*mid>n) r=mid-1;
else l=mid+1;
}
return -1;
}
void factor()
{
for(int i=1;i<=tot;i++){
if((1ll*prime[i])>n) break;
if(n%(1ll*prime[i])==0){
int summ=0;
while(n%(1ll*prime[i])==0){
summ++;
n