题解:
算法复杂度:i*i<=10的次方, 枚举i是10的9次方,可以枚举一下所有x的p次方的
但是!!!
我感觉想法没有问题···但是我们可以试试优化:
i∗i∗i<=10的18次方,枚举i是1的6次方i∗i∗i<=10的18次方,枚举i是1的6次方,可以枚举一下所有x的p次方。算一下所有p>=3的情况,去除p==2的情况,可以判断一下里面是完全平方数的数字。加上正好等于sqrt(l),当k>3的时候,可以用下面的方法实现
s*=i; K++;
if(mp[s]) continue; mp[s] = 1;
if(K >= k) cnt++;
于是我就
试着去写写AC代码吧,就不出示了(部分代码如下)
for(ll i=2;i*i*i<=n;i++){
ll s=i*i; ll K = 2;
while(s<=n/i){
s*=i; K++;
if(mp[s]) continue; mp[s] = 1;
if(K >= k) cnt++;
ll sq = sqrtl(s);
if(sq * sq == s && sq <= (ll)sqrtl(n)) zt++;
tot++;