拼多多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);
}
} 

查看11道真题和解析