标签:洛谷 仪仗队 积性 mo P2158 int SDOI2008
洛谷 P2158 [SDOI2008] 仪仗队
思路:套莫反
点击查看代码
int mo[N];
int cnt,primes[N];bool st[N];
ll sum[N];
void init(){
mo[1] = 1;
for(int i=2;i<N;i++){
if(!st[i]) primes[cnt++] = i,mo[i] = -1;
for(int j=0;primes[j]*i<N;j++){
st[primes[j]*i] = 1;
if(i%primes[j] == 0) break;
mo[primes[j]*i] = -mo[i];
}
}
for(int i=1;i<N;i++) sum[i] = sum[i-1] + mo[i];
}
int g(int n,int x){
return n/(n/x);
}
int main(){
init();
int n;
cin>>n;
if(n==1){cout<<0<<endl;return 0;}
ll res =0;
for(int l = 1,r; l <= n-1 ;l = r + 1){
r = min(n,g(n-1,l));
res+=(ll)(sum[r]-sum[l-1])*((n-1)/l)*((n-1)/l);
}
cout<<res+2<<endl;
return 0;
}
标签:洛谷,仪仗队,积性,mo,P2158,int,SDOI2008 来源: https://www.cnblogs.com/muscletear/p/15363818.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。