• BZOJ——T2190: [SDOI2008]仪仗队


    Time Limit: 10 Sec  Memory Limit: 259 MB
    Submit: 3216  Solved: 2075
    [Submit][Status][Discuss]

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

    Description

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

    Input

      共一个数N。

    Output

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

    Sample Input

      4

    Sample Output

      9


    HINT

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

    Source

    可以将最左下⻆的点标为(0; 0), 那么显然如果存在⼀个点(x; y), 且有gcd(x; y) = k (k ̸= 1),

    那么点(x/k,y/k),一定会被(x,y)挡住——原题转化为求所有点坐标互为质数得点的个数

    可以先求一半(上三角,整个看成正方形),,在加上三个特殊点  :(1,0) (0,1) (1,1)

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 int n,ans;
     7 
     8 int phi(int x)
     9 {
    10     int ret=1;
    11     for(int i=2;i*i<=x;i++)
    12         if(x%i==0)
    13         {
    14             x/=i;
    15             ret*=i-1;
    16             for(;x%i==0;)
    17                 ret*=i,x/=i;
    18         }
    19     if(x>1) ret*=x-1;
    20     return ret;
    21 }
    22 
    23 int main()
    24 {
    25     scanf("%d",&n);
    26     if(!n)
    27     {
    28         puts("0");
    29         return 0;
    30     }
    31     for(int i=2;i<n;i++)
    32         ans+=phi(i);
    33     printf("%d",(ans<<1)+3);
    34     return 0;
    35 } 
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    判断pc端或移动端并跳转
    拖动验证码插件
    angularjs 简易模态框
    angularjs 设置全局变量的3种方法
    摄影之HDR
    CentOS上使用yum安装Apache
    CentOs6.5中安装和配置vsftp简明教程
    python 安装easy_install和pip
    linux mysql 操作命令
    .net源码分析
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7246886.html
Copyright © 2020-2023  润新知