我们可以取两条线段的中点,若重合就让第二条线段的中点+1
Q:中点+1后不在线段上怎么办?
A:由于C++整数除法自动省略小数,也就是向下取整,若线段长度大于1,那么中点+1后一定不会超出线段,若线段长度为1,即l+1=r,那么\left\lfloor\dfrac{l+r}{2}\right\rfloor=l,所以中点+1=r,也不会超出线段,所以中点+1后无论如何都在线段上,符合题意
代码如下
1 |
|
我们可以取两条线段的中点,若重合就让第二条线段的中点+1
Q:中点+1后不在线段上怎么办?
A:由于C++整数除法自动省略小数,也就是向下取整,若线段长度大于1,那么中点+1后一定不会超出线段,若线段长度为1,即l+1=r,那么\left\lfloor\dfrac{l+r}{2}\right\rfloor=l,所以中点+1=r,也不会超出线段,所以中点+1后无论如何都在线段上,符合题意
代码如下
1 |
|