bzoj 2190 [SDOI2008]仪仗队(欧拉函数)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj 2190 [SDOI2008]仪仗队(欧拉函数)相关的知识,希望对你有一定的参考价值。

 

【题目链接】

 

    http://www.lydsy.com/JudgeOnline/problem.php?id=2190

 

【题意】

   

    n*n的正方形,在(0,0)格点可以看到的格子数目。

 

【思路】

   

    预处理出欧拉函数。

    (x,y)=1,1<=y<=n,x<y的数对为t=sigma{ phi(i) } 1<=i<=n,则答案为2*t+1。

    当然也可以用莫比乌斯反演求,懒得写了 (? ̄△ ̄)?

 

【代码】

 

 1 #include<cmath>
 2 #include<cstdio>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 const int N = 5e4+10;
 7 
 8 int n;
 9 int phi[N];
10 
11 void get_phi(int n)
12 {
13     phi[1]=1;
14     for(int i=2;i<=n;i++) if(!phi[i]) 
15     {
16         for(int j=i;j<=n;j+=i) 
17         {
18             if(!phi[j]) phi[j]=j;
19             phi[j]=phi[j]/i*(i-1);
20         }
21     }
22 }
23 
24 int main()
25 {
26     scanf("%d",&n);
27     get_phi(n);
28     int ans=0;
29     for(int i=1;i<n;i++) ans+=phi[i];
30     printf("%d",ans*2+1);
31     return 0;
32 }

 

以上是关于bzoj 2190 [SDOI2008]仪仗队(欧拉函数)的主要内容,如果未能解决你的问题,请参考以下文章

bzoj2190 [SDOI2008]仪仗队

bzoj 2190: [SDOI2008]仪仗队

BZOJ-2190: [SDOI2008]仪仗队 (欧拉函数)

bzoj 2190 [SDOI2008]仪仗队

bzoj2190 [SDOI2008]仪仗队(欧拉函数)

BZOJ-2190: [SDOI2008]仪仗队 (欧拉函数)