zoukankan      html  css  js  c++  java
  • bzoj2190 仪仗队

    题目传送门

    思路:

      哪些点能被人看到,其实就是哪些点不会被其他点挡住,只要顶点的坐标互质就可以了,互质用欧拉函数算。特殊考虑一下n=1和0的情况。

      欧拉函数,Φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数(小于等于1)就是1本身),代码中为了保持精度,式子应该要化简一下,

    #include<cstdio>
    #include<iostream>
    using namespace std;
    typedef long long ll;
    const int maxn=40010;
    bool vis[maxn];
    int prim[maxn],tot;
    int n;
    ll ans=0;
    double tmp=0;
    int main() {
        vis[1]=1;
        for(int i=2; i<=maxn; i++) {
            if(!vis[i]) {
                for(int j=i*2; j<maxn; j+=i) {
                    vis[j]=1;
                }
            }
        }
        for(int i=1; i<=maxn-1; i++) {
            if(!vis[i])prim[++tot]=i;
        }
        cin>>n;
        if(n==0) {
            puts("0");
            return 0;
        }
        if(n==1) {
            puts("1");
            return 0;
        }
        n--;
        for(int i=1; i<=n; i++) {
            tmp=i;
            for(int j=1; j<=tot; j++) {
                if(i%prim[j]==0) {
                    tmp=tmp*(prim[j]-1)/prim[j];
                } else if(prim[j]>i)break;
            }
            ans+=tmp;
        }
        printf("%lld
    ",ans*2+1);
    }
    View Code

    2190: [SDOI2008]仪仗队

    Time Limit: 10 Sec  Memory Limit: 259 MB
    Submit: 4138  Solved: 2760
    [Submit][Status][Discuss]

    Description

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

    Input

      共一个数N。

    Output

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

    Sample Input

      4

    Sample Output

      9


    HINT

    【数据规模和约定】   对于 100% 的数据,1 ≤ N ≤ 40000

  • 相关阅读:
    贪心——poj百炼3468:电池寿命
    贪心——部分背包
    C++编程规范
    调和级数求和
    人工神经网络
    Latex各种符号
    poj1088 滑雪,dp
    数据挖掘建模过程
    Java MyEclipse:The type java.lang.CharSequence cannot be resolved. It is indirectly referen
    Java调用阿里云短信接口发送手机验证码
  • 原文地址:https://www.cnblogs.com/mountaink/p/10104367.html
Copyright © 2011-2022 走看看