复杂度O(nlogn),帮本蒟蒻优化一下吧 OrzOrz
#include<bits/stdc++.h>
using namespace std;
long long n,k,s,ans;
map<long long,bool>a;
long long qpow(long long x,long long y)
{
long long ans=1,base=x;
while(y)
{
if(y&1) ans*=base;
base*=base;
y>>=1;
}
return ans;
}
int main()
{
cin>>n>>k;
for(long long i=2;i*i<=n;i++)
{
s=qpow(i,k-1);
if(!a[i])
{
for(long long j=k;j<=n;j++)
{
s*=i;
if(s>n)
{
if(j==k)
{
cout<<ans+1;
return 0;
}
break;
}
if(!a[s]) ans++;
a[s]=1;
}
}
}
cout<<ans+1;
return 0;
}