1. 推公式
已知a 整除 v = b 那么 a / v 的值满足[b, b + 1)
那么 b <= a / v < b + 1
对于左式来说 v <= a / b
对于右式 v > a / (b + 1)) + 1
组合下就是 a / (b + 1)) + 1 < v <= a / b
2.二分答案
分别二分出v的最小值和最大值
首先l 和r很好求 l = 1, r = 1e9
求最小值 那么check函数怎么写呢 考虑到求最小 那么大的肯定OK 当v = 1e9时 a / v 大概率是个0 那么check就是 a / mid <= b
求最大值同理
有很多个集合 让我们求的是答案的交集
Tips :二分答案就是个01串 那么对于最小值来说 肯定是 000011111
对于最大值来说 肯定是1111100000
合起来就是00011110000