某个人拿到了两条边,边长分别为a和b,他想选择一个长度为c的边,满足c是[l,r]区间内的正整数,且三条边可以形成三角形。他想知道有多少种选择方案?共有t次询问。
数据范围:
1 <= t <= 1000
1 <= a,b <= 10 ^ 9
1 <= l <= r <= 10 ^ 9
输入:
第一行输入一个正整数t,代表询问次数
接下来t行,每行输入四个正整数 a、b、l、r代表一次询问
2
2 3 1 2
4 5 6 8
输出:
1
3
package main
import "fmt"
func main() {
t := 0
fmt.Scan(&t)
for i := 0; i < t; i++ {
a, b, l, r := 0, 0, 0, 0
fmt.Scan(&a, &b, &l, &r)
if a+b <= r { // r 是上限
r = a + b - 1
}
max, min := a, b
if b > a {
max, min = b, a
}
if max-min+1 > l {
l = max - min + 1
}
if r-l+1 <= 0 {
fmt.Println(0)
} else {
fmt.Println(r - l + 1)
}
}
}