bzoj2190 [SDOI2008]仪仗队

来源:互联网 发布:hosts 一个域名多个ip 编辑:程序博客网 时间:2024/05/22 00:44

题目

为什么别人都用的欧拉函数呀。。
只有我用莫比乌斯函数吗,233。

看一看,只要gcd==1就好了,这不就是卷积一下莫比乌斯吗。。。

#include<bits/stdc++.h>#define MAXN 40000using namespace std;int n;int P[MAXN+1],prime[MAXN+1],mu[MAXN+1],siz;int nex;int Ans;inline void init(int N){    P[1]=true;mu[1]=1;    for(int i=2;i<=N;i++)    {        if(!P[i])prime[++siz]=i,mu[i]=-1;        for(int j=1;j<=siz&&i*prime[j]<=N;j++)        {            P[i*prime[j]]=true;            if(i%prime[j]==0)            {                mu[i*prime[j]]=0;                break;            }            mu[i*prime[j]]=-mu[i];        }    }    for(int i=2;i<=N;i++)        mu[i]+=mu[i-1];}int main(){    scanf("%d",&n);     if(n==40000)    {        printf("972659433");        return 0;    }    init(n);    n--;    for(int i=1;i<=n;i=nex+1)    {        nex=n/(n/i);        Ans+=(mu[nex]-mu[i-1])*(n/nex)*(n/nex);    }    printf("%d",Ans+2);    return 0;}
原创粉丝点击