65ptsTLE求助
查看原帖
65ptsTLE求助
565265
I_will_AKIOI我心依旧楼主2023/7/11 20:34

复杂度O(nlog⁡n)O(\sqrt n\log n),帮本蒟蒻优化一下吧 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;
}
2023/7/11 20:34
加载中...