| 12345678910111213141516171819202122232425262728293031 | func findKthNumber(m int, n int, k int) int {	beg, end := 1, m*n	for beg <= end {		mid := beg + (end-beg)/2		if rank(m, n, mid) < k {			beg = mid + 1		} else {			end = mid - 1		}	}	return beg}func rank(m, n, x int) (cnt int) {	// Find the rank row by row.	// Assume that x is in the ith row:	// 1*i 2*i 3*i ... n*i, then	// x/i is in row 1 2 3 ... n,	// so x is the (x/i)th num.	for i := 1; i <= m; i++ {		cnt += minInt(n, x/i)	}	return cnt}func minInt(x, y int) int {	if x < y {		return x	}	return y}
 |