• luogu P2158 [SDOI2008]仪仗队


    题目描述

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

    输入输出格式

    输入格式:

    共一个数N

    输出格式:

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

    输入输出样例

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

    说明

    【数据规模和约定】

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

    不难发现

    以C君为(0,0)点构成坐标系

    只有该店的横坐标与纵坐标互质时才能被看到

    那么就变成就欧拉函数问题

    单个求欧拉版

    #include<cstdio>
    using namespace std;
    const int maxn = 1110101;
    int oula[maxn];
    int prime[maxn];
    bool a[maxn];
    int n;
    int phi(int x)
    {
        int ret=1;
        for(int i=2;i*i<=x;i++)
        {
            if(x%i==0)
            {
                ret*=i-1,x/=i;
                while(x%i==0)
                {
                    ret*=i;x/=i;
                }
            }
        }
        if(x>1)ret*=x-1;
        return ret;
    }
    
    int main ()
    { 
        scanf("%d",&n);
        int ans=0;
        for(int i=1;i<n;i++)
        {
            ans+=phi(i);
        }
        ans=ans*2,ans+=1;
        printf("%d
    ",ans);
        return 0;
    }
    View Code

    一起求版

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    int n;
    const int maxn =400004;
    int phi[maxn];
    void get_phi() {
        phi[1]=1;
        for(int i=2; i<=n; i++) {
            if(!phi[i])
                for(int j=i; j<=n; j+=i) {
                    if(!phi[j])phi[j]=j;
                    phi[j]=phi[j]/i*(i-1);
                }
        }
    }
    int main() {
        scanf("%d",&n);
        get_phi();
        int ans=0;
        for(int i=1; i<=n-1; i++)ans+=phi[i];
        printf("%d",2*ans+1);
        return 0;
    }
    View Code
  • 相关阅读:
    js 构造函数 constructor
    js foreach和map区别
    js 静态方法和实例方法
    学习知识点总结(es6篇)
    java1.5新特性(转)
    21 Managing the Activity Lifecycle
    Java进阶Collection集合框架概要·16
    Java进阶核心之集合框架Map下集·18
    Java进阶核心之集合框架Set·19
    Java进阶核心之集合框架List·17
  • 原文地址:https://www.cnblogs.com/sssy/p/7299543.html
Copyright © 2020-2023  润新知