• 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 }
  • 相关阅读:
    黑胶100
    界面滑动+ztree
    Linux下Java获取本机IP地址
    垂直对齐vertical-align:top
    针对jquery获取表单数据并且迭代方式
    js传递参数中文乱码
    前端开发资源库
    webpack加载器(Loaders)
    webpack基础知识点
    webpack操作基础
  • 原文地址:https://www.cnblogs.com/fengzhiyuan/p/7732278.html
Copyright © 2020-2023  润新知