zoukankan      html  css  js  c++  java
  • BZOJ 2440 完全平方数

    考虑二分答案。而且1..n中他喜欢的大概占3/5左右。

    考虑莫比乌斯函数与容斥原理,得答案。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #define maxn 100050
    using namespace std;
    long long t,n,miu[maxn],prime[maxn],cnt=0;
    bool vis[maxn];
    void get_table()
    {
        miu[1]=1;
        for (long long i=2;i<=maxn;i++)
        {
            if (vis[i]==false) 
            {
                vis[i]=true;
                prime[++cnt]=i;
                miu[i]=-1;
            }
            for (long long j=1;j<=cnt && i*prime[j]<=maxn;j++)
            {
                vis[i*prime[j]]=true;
                if (i%prime[j]==0) 
                {
                    miu[i*prime[j]]=0;
                    break;
                }
                else miu[i*prime[j]]=-miu[i];
            }
        }
    }
    long long cal(long long x)
    {
        long long r=sqrt(x),ret=0;
        for (long long i=1;i<=r;i++)
            ret+=x/(i*i)*miu[i];
        return ret;
    }
    void work()
    {
        scanf("%lld",&n);
        long long l=1,r=2000000000,ans;
        while (l<=r)
        {
            long long mid=(l+r)>>1;
            long long now=cal(mid);
            if (now>=n) {ans=mid;r=mid-1;}
            else l=mid+1;
        }
        printf("%lld
    ",ans);
    }
    int main()
    {
        scanf("%lld",&t);
        get_table();
        for (long long i=1;i<=t;i++)
            work();
        return 0;
    }
  • 相关阅读:
    Python——6切片
    Python——5函数
    Python——4Dict和Set类型
    C# for循环
    C# while循环
    C#循环结构
    C#判断
    C#运算符
    windows安装IIS不成功的原因
    “未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5433136.html
Copyright © 2011-2022 走看看