| 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
 
- }
 
 
  |