码迷,mamicode.com
首页 > 其他好文 > 详细

Luogu_2158_[SDOI2008]仪仗队

时间:2017-09-09 21:40:56      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:cout   ==   class   pre   turn   恢复   ios   out   long   

---恢复内容开始---

如果(x,y)!=1,必然被(x/gcd(x,y),y/gcd(x,y))挡住;所以就是对每个x求与它互质的数,有类似筛法求phi就可以了;

注意:x应-1;给的数据是1开始,实际在坐标上第一列x是零;

#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#include<vector>
#include<queue>
#include<cstring>
using namespace std;
typedef long long LL;
int phi[40005];
void getphi(int n)
{
    for(int i=2;i<n;i++)phi[i]=i;
    for(int i=2;i<n;i++)if(phi[i]==i)
    for(int j=i;j<n;j+=i)
    {
        phi[j]/=i;
        phi[j]*=(i-1);
    }
}
int main()
{
    int n,ans=0;
    cin>>n;
    getphi(n);
    for(int i=2;i<n;i++)
    ans+=phi[i];
    cout<<ans*2+3<<endl;//(+3):素数从2开始算,直接加上x=0,1;
    return 0;
}

 

---恢复内容结束---

Luogu_2158_[SDOI2008]仪仗队

标签:cout   ==   class   pre   turn   恢复   ios   out   long   

原文地址:http://www.cnblogs.com/Gsimt/p/7499295.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!