• Luogu P2158 [SDOI2008]仪仗队【数学/欧拉函数】by cellur925


    题目描述

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

    输入输出格式

    输入格式:

    共一个数N

    输出格式:

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

    输入输出样例

    输入样例#1: 
    4
    输出样例#1: 
    9

    说明

    【数据规模和约定】

    对于 100% 的数据,1 ≤ N ≤ 40000

    队伍整齐,当且仅当在n*n的方阵中;能被看到的人,当且仅当它与左下角的点连线所得的线段上没有别人。

    剩下的冷静分析交给dalao @slzxzxh (侵删

    code

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cmath>
     4 
     5 using namespace std;
     6 typedef long long ll;
     7 
     8 int n;
     9 ll ans,tmp;
    10 
    11 ll olaphi(ll x)
    12 {
    13     ll cnt=x;
    14     for(ll i=2;i<=sqrt(x);i++)
    15     {
    16         if(x%i==0)
    17         {
    18             cnt=cnt/i*(i-1);
    19             while(x%i==0) x/=i;
    20         }
    21     }
    22     if(x>1) cnt=cnt/x*(x-1);
    23     return cnt;
    24 }
    25 
    26 int main()
    27 {
    28     scanf("%d",&n);
    29     for(ll i=2;i<=n-1;i++) tmp+=olaphi(i);
    30     ans+=tmp*2;
    31     if(ans) ans+=3;
    32     printf("%lld
    ",ans); 
    33 //    for(ll i=2;i<=n;i++) printf("%lld ",olaphi(i)); 
    34     return 0;
    35 }
    View Code

    【题外话】这题跟poj3090(的图)一毛一样qwq。题面略有区别,poj把这个方阵放到了一个平面直角坐标系中于是原点就是(0,0);

    方阵行列数为0~n-1。聪明的你,能不能想到他们的差异?

  • 相关阅读:
    PHP FILTER_VALIDATE_REGEXP 过滤器
    PHP FILTER_VALIDATE_FLOAT 过滤器
    PHP FILTER_VALIDATE_BOOLEAN 过滤器
    PHP FILTER_VALIDATE_INT 过滤器
    PHP FILTER_UNSAFE_RAW 过滤器
    PHP addslashes() 函数
    PHP FILTER_SANITIZE_NUMBER_FLOAT 过滤器
    PHP FILTER_SANITIZE_NUMBER_INT 过滤器
    PHP FILTER_SANITIZE_URL 过滤器
    PHP FILTER_SANITIZE_EMAIL 过滤器
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9393163.html
Copyright © 2020-2023  润新知