bzoj2190: [SDOI2008]仪仗队

来源:互联网 发布:内存卡数据恢复软件 编辑:程序博客网 时间:2024/05/22 04:40
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int tot,prime[20005],fai[40005];bool check[40005];int main(){    int n;    scanf("%d",&n);    unsigned long long ans=0;    for(int i=2;i<=n;i++)    {        if(!check[i])        {            prime[tot++]=i;            fai[i]=i-1;        }        for(int j=0;j<tot;j++)        {            if(i*prime[j]>n)            break;            check[i*prime[j]]=1;            if(i%prime[j])            {                fai[i*prime[j]]=fai[i]*(prime[j]-1);            }            else            {                fai[i*prime[j]]=fai[i]*prime[j];                break;            }        }    }    for(int i=1;i<=n-1;i++)    ans+=fai[i];    if(n==1)    cout<<"0";    else if(n==2)    cout<<"3";    else    cout<<(ans+2<<1)-1;}
原创粉丝点击