第6个点TLE,用线筛来改反而多了一个TLE,求助

P1445 [Violet] 樱花

您写的线筛能放上来吗? @[Boar](/user/325404)
by _998344353_ @ 2020-08-10 08:59:28


这么判复杂度不对
by _998344353_ @ 2020-08-10 09:00:07


@[ZYY12CSP](/user/299616) ```#include<bits/stdc++.h> using namespace std; typedef unsigned long long ull; const ull mod=1e9+7; ull a[10000000],pri[10000000]={2},num=1; bool isp[10000000]; void init(ull mx){ memset(isp,1,sizeof(isp)); for(int i=3;i<=mx;i+=2){ if(isp[i]) pri[num++]=i; for(int j=0;j<num&&i*pri[j]<=mx;j++){ isp[i*pri[j]]=0; if(i%pri[j]==0) break; } } } void f(ull x){ int i=0; while(pri[i]!=x){ if(x%pri[i]==0){ x/=pri[i]; a[i]++; } else i++; } a[i]++; } int main(){ ull x,n,ans=1; cin>>n; init(n); memset(a,0,sizeof(ull)*n); for(ull i=2;i<=n;i++) f(i); for(ull i=0;i<=n;i++) if(a[i]) ans=((1+2*a[i])*ans)%mod; cout<<ans; return 0; }
by Boar @ 2020-08-10 22:28:09


|