• BZOJ 2190: [SDOI2008]仪仗队 欧拉函数


    2190: [SDOI2008]仪仗队

    Time Limit: 10 Sec  Memory Limit: 256 MB
    Submit: 1405  Solved: 901

    题目连接

    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

    题解:

    这道题转化一下,就是求0<=x,y<n中,gcd(x,y)=1的个数

    这时候我们就得祭上欧拉函数了!

    搞呀搞,就很简单的知道,答案应该是前n-1项欧拉函数和-1+2(有0的存在)

    代码:

    //qscqesze
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <set>
    #include <vector>
    #include <sstream>
    #include <queue>
    #include <typeinfo>
    #include <fstream>
    #include <map>
    typedef long long LL;
    using namespace std;
    //freopen("D.in","r",stdin);
    //freopen("D.out","w",stdout);
    #define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
    #define maxn 200001
    #define mod 10007
    #define eps 1e-9
    const int inf=0x7fffffff;   //无限大
    /*
    
    */
    //**************************************************************************************
    inline int read()
    {
        int x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    LL phi[maxn],n;
    void phi1()
    {
        memset(phi,0,sizeof(phi));
        phi[1]=1;
        for(LL i=2;i<=n;i++)
        {
            if(!phi[i])
            {
                for(LL j=i;j<=n;j+=i)
                {
                    if(!phi[j]) phi[j]=j;
                    phi[j]=phi[j]/i*(i-1);
                }
            }
        }
    }
    int main()
    {
        n=read();
        phi1();
        LL ans=0;
        for(int i=1;i<n;i++)
            ans+=phi[i];
        printf("%d",ans*2+1);
    }
  • 相关阅读:
    (转)Hadoop MapReduce链式实践--ChainReducer
    (转)Permission denied: win7下面eclipse上传本地文件到DFS && 运行M/R程序时出现的同样的错误解决方法
    为什么需要注册OCX控件?
    WPF插件开发:使用FrameworkElementAdapters时VS报错的问题
    C# semphore的使用
    C# int可以表示的最大值
    WCF客户端从服务器下载数据
    C# 读取WAV文件(详细)
    C#读取wav文件
    VEMap.DeleteAllShapeLayers 方法
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4365793.html
Copyright © 2020-2023  润新知