75分,剩余的TLE,不会容斥(悲
求大佬调
#include<iostream>
#include<cmath>
#include<map>
using namespace std;
unsigned long long n,k,ans;
map<unsigned long long ,bool>mp;
int main(){
scanf("%lld %lld",&n,&k);
int maxn=pow(double(n),double(1.0/k*1.0));
for(int i=2;i<=maxn;++i){
if(mp[i]){
continue;
}
unsigned long long m=log(n)/log(i)*1.0,num=i;
if(m-k+1<=0)cout<<"?";
ans+=(m-k+1>0?m-k+1:0);
for(int j=1;j<=m;++j){
mp[num]=true;
num*=i;
}
}
printf("%lld",ans+1);
return 0;
}