几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第 k 小的数字吗?
乘法表是大小为 m x n 的一个整数矩阵,其中 mat[i][j] == i * j(下标从 1 开始)。
给你三个整数 m、n 和 k,请你在大小为 m x n 的乘法表中,找出并返回第 k 小的数字。
示例 1:

输入:m = 3, n = 3, k = 5
输出:3
解释:第 5 小的数字是 3 。
思路

这个带下取整的不等式怎么变化的?
可以先去掉下取整符号,在加回来,发现也是成立的(因为n一定是整数)
二分成立的思路在 有序矩阵中第K小的元素-CSDN博客 有介绍
python
class Solution:
def findKthNumber(self, m: int, n: int, k: int) -> int:
left,right=1,m*n
while left<right:
mid=(left+right)//2
count= mid//n*n
for i in range(mid//n+1,m+1):
count+=mid//i
if count>=k:
right=mid
else:
left=mid+1
return left