牛牛与整除分块

牛牛与整除分块

https://ac.nowcoder.com/acm/contest/9982/D

化简可得

于是以为界,在左边或者右边找对应的位置即可。

#include <bits/stdc++.h>
#define sc(x) scanf("%lld", &(x))
#define pr(x) printf("%lld\n", (x))
#define rep(i, l, r) for (int i = (l); i <= (r); ++i)
using namespace std;
typedef long long ll;
const int N = 1e5 + 7;
const int mod = 1e9 + 7;
int main() {
    ll T, n, x;
    sc(T);
    while (T--) {
        sc(n), sc(x);
        ll a = sqrt(n);
        if (x <= a)
            pr(x);
        else {
            ll l = n / a;
            ll ans = 0;
            if (a != l) ++ans;
            ll now = n / x;
            ans += a - now + a;
            pr(ans);
        }
    }
    return 0;
}
算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论

相关推荐

今天 10:56
门头沟学院 Java
点赞 评论 收藏
分享
今天 11:05
门头沟学院 运营
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务