ABC296D题解

简单题。

考虑 -1 的情况,即为 n2<m

剩下暴力枚举 a 即可。上限为 m+1。注意要 +1,因为上取整(本人赛时被这个罚了很多次)。

可以由 ma 确定 b 的最小值,即 b=ma

注意卡 long long 以及 a,b 的最大值不能超过 n

时间复杂度 O(m)。(原来手误打错,感谢管理员指出qwq)

#include<cstdio>
#include<cmath>
#define ll unsigned long long
ll n,m;
ll ans=1ll<<64-1;
ll min(ll a,ll b)
{
    return a<b?a:b;
}
ll a,b;
int main()
{
    scanf("%llu%llu",&n,&m);
    if(n*n<m) printf("-1");
    else if(n*n==m) printf("%llu",n*n);
    else if(m<=n) printf("%llu",m);
    else
    {
        for(a=1;a<=sqrtl(m)+1&&a<=n;a++)
        {
            b=m/a;
            if(a*b<m) b++;
            if(b<=n&&a*b==m)
            {
                ans=m;
                break;
            }
            if(b<=n&&a*b>m) ans=min(ans,a*b);
        }
        printf("%llu",ans);
    }
    return 0;
}
posted @   osfly  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示