题解|#Antiamuny wants to leaern binary search again#

将题目中的二分写法做一个小小的改变即可,注意:一定要将左边移动,不然会损失一些次数。
#include <bits/stdc++.h>


using namespace std;

int f(int l, int r, int cnt) {
    int n = 0, mid;
    while (l<=r) {
        n++;
        mid = ((long long)l+r)/2;
        if (n==cnt) break;
        else l = mid+1;
    }
    if (cnt>n) {
        return -1;
    }
    return mid;
}

int main() {
    int T;
    cin>>T;
    while (T--) {
        int l, r, cnt;
        cin>>l>>r>>cnt;
        cout<<f(l, r, cnt)<<endl;
    }
    
    return 0;
}


全部评论

相关推荐

07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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