小欧有 2 个区间 [l_1,r_1]和[l_2,r_2] 。小欧想知道存在多少个整数 mid 可以找到两个整数 x 和 y 满足 mid = ⌊ (x+y/2) ⌋ 且 l_1 ≤ x ≤ r_1 , l_2 ≤ y ≤ r_2 。 其中 ⌊ x ⌋ 表示对 x 下取整。
一行四个整数 l_1,r_1,l_2,r_2(1 ≤ l_1 ≤ r_1 ≤ 10^14, 1 ≤ l_2 ≤ r_2 ≤ 10^14) 。
一行一个整数,表示满足条件的 mid 数量
1 3 2 4
3
考点:基础数学
限制 1 秒 / 256MB | 标准输入输出
推荐方向:基础数学
本题切入点
mid = ⌊(x+y)/2⌋ 的取值范围是 [(l1+l2)/2, (r1+r2)/2],答案即该区间内的整数个数,注意上下取整的边界处理。
把题目转化为数学表达式,用公式或性质直接求值。
思路框架(基础数学 通法 · 非本题专属)
实现要点:浮点输出通常要求相对误差不超过 1e-7,注意用 double/long double 或高精度小数。
复杂度:时间 O(1) ~ O(log n) | 空间 O(1)
该范式的通法易错点
对照本题
样例 1:输入 1 3 2 4 → 输出 3
当 mid = 1 时,可以找到 x = 1 , y = 2 。
当 mid = 2 时,可以找到 x = 2 , y = 2 。
当 mid = 3 时,可以找到 x = 3 , y = 3 。
其他任意 mid 都无法找到满足条件的 x 和 y 。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-OPPO-研发岗笔试。