• 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。聪明的你,能不能想到他们的差异?

  • 相关阅读:
    C++内存检测函数_CrtSetBreakAlloc()
    Detours 的配置
    浅析杀毒软件开发原理
    Sqlite3初学
    java拦截器、过滤器的区别
    sudo 设置无需密码
    Visual Studio 2012/2010/2008 远程调试
    jquery 随笔
    网页中显示xml,直接显示xml格式的文件
    centos7.2_x64安装mysql.tar.gz
  • 原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9393163.html
Copyright © 2020-2023  润新知