zoukankan      html  css  js  c++  java
  • BZOJ 2440: [中山市选2011]完全平方数

    二次联通门 : BZOJ 2440: [中山市选2011]完全平方数

    /*
        BZOJ 2440: [中山市选2011]完全平方数
    
        二分答案+莫比乌斯函数
    */
    #include <cstdio>
    #include <iostream>
    
    #define rg register
    inline void read (int &n)
    {
        rg char c = getchar ();
        for (n = 0; !isdigit (c); c = getchar ());
        for (; isdigit (c); n = n * 10 + c - '0', c = getchar ());
    }
    
    #define Max 1000006
    int mu[Max], p[Max]; bool is[Max];
    
    void Euler (int N)
    {
        rg int i, j, k; int C = 0; mu[1] = 1;
        for (i = 2; i <= N; ++ i)
        {
            if (!is[i]) p[++ C] = i, mu[i] = -1;
            for (j = 1; j <= C; ++ j)
            {
                if ((k = i * p[j]) > N) break;
                is[k] = true;
                if (i % p[j] == 0) { mu[k] = 0; break; }
                else mu[k] = -mu[i];
            }
        }
    }
    
    #define INF 2e9
    typedef long long LL;
    LL Calc (LL N)
    {
        LL res = 0;
        for (rg int i = 1; i * i <= N; ++ i)
            res += N / (i * i) * mu[i];
        return res;
    }
    int main (int argc, char *argv[])
    {
        int T, K; read (T); rg LL l, r, m, res;
        Euler (Max - 1);
        for (; T; -- T)
        {
            read (K);
            l = K, r = INF;
            for (; l <= r; )
            {
                m = l + r >> 1;
                if (Calc (m) >= K) r = m - 1, res = m;
                else l = m + 1;
            }
            printf ("%lld
    ", res);
        }
        return 0;
    }
  • 相关阅读:
    异常
    带参数的方法
    变量,基本类型,数据类型和运算符
    数据类型转换(针对数字类型)
    this关键字
    面向对象DAO模式
    常见类 Object
    方法和包
    final关键字
    abstract关键字
  • 原文地址:https://www.cnblogs.com/ZlycerQan/p/8073363.html
Copyright © 2011-2022 走看看