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

[SDOI2008]仪仗队

时间:2017-05-31 13:55:33      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:table   problem   print   lap   src   alt   之间   ==   pen   

题目链接

题目以左下角C君为0,0点 会发现C君能看到的人横纵坐标都是质数(不会证明,强行找规律),还有一点就是对称性,可以看到(2,1)点那么必然能看到(1,2)点。

那么结论就出来了:

1 -> n-1之间与phi值加和*2+1

技术分享
 1 #include <cstdio>
 2 using namespace std;
 3 int x,phi[100005],ans=1;
 4 void phi_table(int n,int *phi)  
 5 {  
 6     for(int i=2;i<=n;i++)  phi[i]=0;   //初始化 
 7     phi[1]=1;  
 8     for(int i=2;i<=n;i++)  
 9     {  
10         if(!phi[i])   
11         for(int j=i;j<=n;j+=i)  
12         {  
13             if(!phi[j])  phi[j]=j;  
14             phi[j]=phi[j]/i*(i-1);  
15         }  
16         ans+=phi[i];  //加和 
17     }   
18 }
19 int main(){
20     scanf("%d",&x);
21     if(x==1){
22         printf("0");
23     }
24     else {
25     phi_table(x-1,phi);
26     printf("%d",ans*2+1);
27     }
28     return 0;
29 }
代码实现

 

[SDOI2008]仪仗队

标签:table   problem   print   lap   src   alt   之间   ==   pen   

原文地址:http://www.cnblogs.com/OIerLYF/p/6923163.html

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