zoukankan      html  css  js  c++  java
  • bzoj2190 [SDOI2008]仪仗队

    作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。       现在,C君希望你告诉他队伍整齐时能看到的学生人数。

    Input

      共一个数N。

    Output

      共一个数,即C君应看到的学生人数。

    Sample Input

      4
    

    Sample Output

      9
    
    

    Hint

    【数据规模和约定】   对于 100% 的数据,1 ≤ N ≤ 40000

    题解:

      题目中发现,只有横坐标和纵坐标互质才可以看见,这个就是欧拉函数吧,1-n的然后*2,加上斜对角线那个1

       就ok了。

     1 #include<cstring>
     2 #include<cmath>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cstdio>
     6 #define N 40007
     7 using namespace std;
     8 
     9 int n;
    10 int phi[N],prime[N],cnt,ans;
    11 bool mark[N];
    12 
    13 void prime_phi()
    14 {
    15     phi[1]=1;
    16     for (int i=2;i<=n;i++)
    17     {
    18         if (!mark[i])
    19         {
    20             prime[++cnt]=i;
    21             phi[i]=i-1;
    22         }
    23         for (int j=1;j<=cnt&&prime[j]*i<=n;j++)
    24         {
    25             int t=prime[j]*i;
    26             mark[t]=1;
    27             if (i%prime[j]==0)
    28             {
    29                 phi[t]=phi[i]*prime[j];
    30                 break;
    31             }
    32             else phi[t]=phi[i]*(prime[j]-1);
    33         }
    34     }
    35 }
    36 int main()
    37 {
    38     scanf("%d",&n);
    39     prime_phi();
    40     for (int i=1;i<n;i++)
    41         ans+=phi[i];
    42     printf("%d",2*ans+1);    
    43 }
  • 相关阅读:
    html-----018----HTML Web Server/HTML URL 字符编码
    html-----017
    SQL Server 2008 R2评估期已过的解决办法和sqlserver 服务器打不开问题
    Eclipse快捷键大全
    with递归
    PIVOT使用
    SSH框架搭建
    更换开发环境后设置Tomcat和jdk版本
    MyBatis 一对多和多对一关联查询
    MyBatis 使用接口增删改查和两表一对一级联查询
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/7732278.html
Copyright © 2011-2022 走看看