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

    题意:小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而这丝毫不影响他对其他数的热爱。 这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一个小X讨厌的数。他列出了所有小X不讨厌的数,然后选取了第 K个数送给了小X。小X很开心地收下了。 然而现在小 W 却记不起送给小X的是哪个数了。你能帮他一下吗?
    题解:二分答案,看有多少个满足条件的数,需要减去所有x/pp
    先预处理出2到sqrt(2e9)的莫比乌斯函数,每次check时扫一遍乘上莫比乌斯系数
    x/(p*p)即可

    /**************************************************************
        Problem: 2440
        User: walfy
        Language: C++
        Result: Accepted
        Time:5240 ms
        Memory:1728 kb
    ****************************************************************/
     
    //#pragma comment(linker, "/stack:200000000")
    //#pragma GCC optimize("Ofast,no-stack-protector")
    //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
    //#pragma GCC optimize("unroll-loops")
    #include<bits/stdc++.h>
    #define fi first
    #define se second
    #define mp make_pair
    #define pb push_back
    #define pi acos(-1.0)
    #define ll long long
    #define vi vector<int>
    #define mod 1000000007
    #define C 0.5772156649
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #define pil pair<int,ll>
    #define pli pair<ll,int>
    #define pii pair<int,int>
    #define cd complex<double>
    #define ull unsigned long long
    #define base 1000000000000000000
    #define fio ios::sync_with_stdio(false);cin.tie(0)
     
    using namespace std;
     
    const double eps=1e-6;
    const int N=50000+10,maxn=5000+10,inf=0x3f3f3f3f,INF=0x3f3f3f3f3f3f3f3f;
     
    bool mark[N];
    int prime[N],mu[N],cnt;
    void init()
    {
        mu[1]=1;
        for(int i=2;i<N;i++)
        {
            if(!mark[i])mu[i]=-1,prime[++cnt]=i;
            for(int j=1;j<=cnt&&prime[j]*i<N;j++)
            {
                mark[i*prime[j]]=1;
                mu[i*prime[j]]=-mu[i];
                if(i%prime[j]==0){mu[i*prime[j]]=0;break;}
            }
        }
    }
    ll check(ll x)
    {
    //    printf("%lld
    ",x);
        ll ans=x;
        for(ll i=2;i*i<=x;i++)ans+=x*mu[i]/(i*i);
        return ans;
    }
    int main()
    {
        init();
        int T;scanf("%d",&T);
        while(T--)
        {
            ll x;
            scanf("%lld",&x);
            ll l=0,r=2e9;
            while(l<r-1)
            {
                ll m=(l+r)>>1;
                if(check(m)>=x)r=m;
                else l=m;
            }
            printf("%lld
    ",l+1);
        }
        return 0;
    }
    /********************
     
    ********************/
    
  • 相关阅读:
    hdu 4027 Can you answer these queries?
    hdu 4041 Eliminate Witches!
    hdu 4036 Rolling Hongshu
    pku 2828 Buy Tickets
    hdu 4016 Magic Bitwise And Operation
    pku2886 Who Gets the Most Candies?(线段树+反素数打表)
    hdu 4039 The Social Network
    hdu 4023 Game
    苹果官方指南:Cocoa框架(2)(非原创)
    cocos2d 中 CCNode and CCAction
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/9245440.html
Copyright © 2011-2022 走看看