拼多多9.1笔试,第四题

参考了大佬的解法,写了个java版
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int k = sc.nextInt();
        int lo = 1, hi = m * n+1;
        k=m*n-k+1;
        int mid=0, count;
        while (lo < hi) {
            mid = lo + (hi - lo) / 2;
            count = 0;//统计比mid小的数有多少个
            for (int i = 1; i <= m; i++) {
                count  += (mid/i > n ? n : mid/i);//mid/i是计算行号
            }
            if (count >= k)hi=mid;//为什么count=k的时候,不直接break?调试发现是因为没法定位(不明白的话,还是自己调试一下吧)
            else lo=mid+1;
        }
        System.out.println(lo);
    }
}


#拼多多##笔试题目##题解#
全部评论
如果hi=m*n的话有什么影响吗?
点赞 回复 分享
发布于 2019-09-02 22:15

相关推荐

评论
点赞
12
分享

创作者周榜

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