用对数处理进行的暴力求解,但似乎因为精度问题出现错解,有什么解决方案吗
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n;
int k,ans=0;
cin>>n>>k;
ans+=pow(2,(log2(n)/k));
for(int i=k+1;i<=log2(n);i++)
for(int j=2;j<=pow(10,(log10(n)/i));j++)
{
bool pd=0;
for(int z=k;z<i;z++)
{
float u=pow(10,log10(pow(j,i))/z);
if(u==(int)u)pd=1;
}
if(!pd)ans++;
}
cout<<ans;
}