zoukankan      html  css  js  c++  java
  • BZOJ 2190: [SDOI2008]仪仗队

    Time Limit: 10 Sec  Memory Limit: 259 MB
    Submit: 3213  Solved: 2072
    [Submit][Status][Discuss]

    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)挡住 所以被看到的必要条件是k==1

    问题就变成了 

    把棋盘劈成两半 则变成求 

     可以看出 括号内的式子就是欧拉函数 

    问题变为求欧拉函数的值

    屠龙宝刀点击就送

    #include <cstdio>
    
    int get_phi(int n)
    {
        int ans=n;
        if(n%2==0) 
        {
            while(n%2==0) n/=2;
            ans/=2;
        }
        for(int i=3;i*i<=n;i+=2)
        {
            if(n%i==0)
            {
                while(n%i==0)  n/=i;
                ans=ans/i*(i-1);
            }
        }
        if(n>1) ans=ans/n*(n-1);
        return ans;
    }
    int n,ans;
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<n;i++)
            ans+=i==1?1:get_phi(i);
        printf("%d",ans*2+1);
        return 0;
    }
    我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。
  • 相关阅读:
    高精度加法
    高精度计算(一)
    算法总结
    崛起之路
    2015浙江高考满分作文汇总(9篇)
    努力
    NOIP2015总结
    P3197 [HNOI2008]越狱[组合数学]
    【原创】SPFA判负环
    P1351 联合权值[鬼畜解法]
  • 原文地址:https://www.cnblogs.com/ruojisun/p/7245914.html
Copyright © 2011-2022 走看看