栗酱的不等式

栗酱的不等式

https://ac.nowcoder.com/acm/problem/14696

注意开Long Long ,避免爆int;
枚举n的值,判断满足条件的解的个数;
r为右边界,n的最大值<=81e16,l为右边界;
mid/h为y满足当前x=i时的条件个数,即为当前条件下解的个数

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll m,n,x,y;
ll check(ll mid)
{
    ll ans=0;
    for(ll i=2;(i*i*i)<=mid;i++)
    {
        ll h=i*i*i;
        if(h<0) break;
        if(mid/h) ans+=mid/h;
    }
   return ans;
}
int main()
{
    while(scanf("%lld",&m)!=EOF)
    {
       ll r=1e17,l=1,res=0;
        while(l<=r)
        {
            ll mid=(l+r)/2;
            if(check(mid)>=m) res=mid,r=mid-1;
            else l=mid+1;
        }
        if(check(res)==m) cout<<res<<endl;
        else cout<<-1<<endl;
    }
}

全部评论

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务