这两份代码为啥得分一个5pts,一个40pts
按理来说都是40pts啊
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int ans=1;
bool a[100000005];
signed main(){
cin.tie(0);
cout.tie(0);
cin>>n>>k;
if(k==1) cout<<n;
else{
int now=2;
while(pow(now,k)<=n){
int mo=2;
int z=pow(now,mo);
if(z*z<=n){
if(a[z]==1){
now++;
continue;
}
}
while(pow(now,mo)<=n){
int x=pow(now,mo);
if(x*x<=n){
a[x]=1;
}
if(mo>=k){
ans++;
}
mo++;
}
now++;
}
cout<<ans;
}
return 0;
}
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
int ans=1;
bool a[100000005];
signed main(){
freopen("power.in","r",stdin);
freopen("power.out","w",stdout);
cin.tie(0);
cout.tie(0);
cin>>n>>k;
if(k==1) cout<<n;
else{
int now=2;
while(pow(now,k)<=n){
int mo=2;
int z=pow(now,mo);
if(z*z<=n){
// if(a[z]==1){
now++;
continue;
}
// }
while(pow(now,mo)<=n){
int x=pow(now,mo);
// if(x*x<=n){
a[x]=1;
// }
if(mo>=k){
ans++;
}
mo++;
}
now++;
}
cout<<ans;
}
return 0;
}