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

     

    Description

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

    其实就是在数一个n*n的网格可以数出多少条线,然后就是y=kx, 如果在同一条线上一定满足 y*a=k(x*a), 则这里的gcd(y,x)=1,通过观察的在这个红色三角形内可以发现每一个y值对应着小于它的x

    则就是一个欧拉函数。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    #define N int(4e4+10)
    int phi[N], prime[N],tot;
    bool mark[N];
    void getphi()
    {
        int i, j;
        phi[1] = 1;
        for (i = 2; i <= N; i++)
        {
            if (!mark[i])  { prime[++tot] = i; phi[i] = i - 1; }
            for (j = 1; j <= tot; j++)
            {
                if (i*prime[j]>N)  break;
                mark[i*prime[j]] = 1;
                if (i%prime[j] == 0)
                {
                    phi[i*prime[j]] = phi[i] * prime[j]; break;
                }
                else  phi[i*prime[j]] = phi[i] * (prime[j] - 1);
            }
        }
    }
    int main()
    {
        getphi();
        int n, ans = 0;
        scanf("%d", &n);
        for (int i = 1; i < n; ++i)
            ans += phi[i];
        printf("%d
    ", ans * 2 + 1);
        return 0;
    }
  • 相关阅读:
    ElasticSearch-03-远行、停止
    ElasticSearch-02-elasticsearch.yaml
    Go-31-杂序
    Go-30-main包
    SpringBoot 初入门
    Spring 事务管理
    JDBC Template
    Spring 基于 AspectJ 的 AOP 开发
    Spring AOP 代理
    Spring 的 AOP 概述和底层实现
  • 原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/10023605.html
Copyright © 2011-2022 走看看