春测T2 95pts求调
  • 板块学术版
  • 楼主_xxy_
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/3/5 16:37
  • 上次更新2023/10/23 22:57:20
查看原帖
春测T2 95pts求调
569702
_xxy_楼主2023/3/5 16:37

WA on #20

#include<algorithm>
#include<cstdio>
#include<map>
#include<math.h>
long long read(){
    long long x=0,f=1;
    char ac=getchar();
    while(ac<'0'||ac>'9'){
        if(ac=='-') f=-1;
        ac=getchar();
    }
    while(ac>='0'&&ac<='9'){
        x=(x<<3)+(x<<1)+(ac-'0');
        ac=getchar();
    }
    return x*f;
}
int read2(){
    int x=0,f=1;
    char ac=getchar();
    while(ac<'0'||ac>'9'){
        if(ac=='-') f=-1;
        ac=getchar();
    }
    while(ac>='0'&&ac<='9'){
        x=(x<<3)+(x<<1)+(ac-'0');
        ac=getchar();
    }
    return x*f;
}
long long n,k,ans1,ans2;
std::map<long long,bool> m;
bool istwo;
long long quick(long long a,int b){
    long long ans=1;
    while(b){
        if(b&1){
            if((n/ans)<a) return -1;
            ans*=a;
        }
        if((n/a)<a) return b==1?ans:-1;
        a*=a;
        b>>=1;
    }
    return ans;
}
int maxn(){
    int l=1,r=1e9,ans;
    while(l<=r){
        int mid=l+r>>1;
        if(quick(mid,k)!=-1){
            ans=mid;
            l=mid+1;
        }
        else r=mid-1;
    }
    return ans;
}
int sqrtt(long long x){
    int l=1,r=1e9,ans;
    while(l<=r){
        int mid=l+r>>1;
        if(1ll*mid*mid<n){
            l=mid+1;
            ans=mid;
        }
        else r=mid-1;
    }
    return ans;
}
signed main(){
    n=read(),k=read2();
    if(k==1){
        printf("%lld",n);
        return 0;
    }
    if(k>=60){
        printf("1");
        return 0;
    }
    if(k==2){
        istwo=1;
        k++;
    }
    int cnt=maxn();
    for(int i=2;i<=cnt;i++){
        long long now=quick(1ll*i,k-1);
        for(int j=k;;j++){
            if(n/now<i) break;
            now*=i;
            if(m[now]) continue;
            if(j%2==0) ans2++;
            ans1++;
            m[now]=1;
        }
    }
    if(istwo){
        printf("%lld",ans1-ans2+sqrtt(n));
    }
    else printf("%lld",ans1+1);
    return 0;
}
2023/3/5 16:37
加载中...