1 条题解

  • 0
    @ 2026-5-19 20:57:52

    题目大意

    给定一个区间 [l,r][l, r]1lr1091 \le l \le r \le 10^9),求其中包含的最小互质区间的数量。

    • 区间 [a,b][a, b]互质区间当且仅当 gcd(a,b)=1\gcd(a, b) = 1
    • 互质区间 [a,b][a, b]最小互质区间当且仅当它不包含任何不等于自身的互质子区间。

    解题思路

    通过分析可知,所有最小互质区间只有两类:

    1. 长度为 11 的区间[1,1][1, 1]
      因为 [x,x][x, x] 互质当且仅当 x=1x = 1gcd(x,x)=x=1\gcd(x, x) = x = 1),且它没有真子区间,所以 [1,1][1, 1] 是最小互质的。

    2. 长度为 22 的区间[i,i+1][i, i+1],其中 i2i \ge 2

      • 相邻整数一定互质,所以 [i,i+1][i, i+1] 是互质区间。
      • 它的真子区间只有 [i,i][i, i][i+1,i+1][i+1, i+1],由于 i2i \ge 2,这两个单点区间都不互质,因此 [i,i+1][i, i+1] 是最小互质的。

    其他任何区间要么本身不互质,要么包含上述两类中的某个作为真子区间,因此都不是最小互质区间。

    计数方法

    给定 [l,r][l, r],我们需要统计所有满足 i2i \ge 2[i,i+1][l,r][i, i+1] \subseteq [l, r]ii 的个数,再加上可能存在的 [1,1][1, 1]

    • 条件 [i,i+1][l,r][i, i+1] \subseteq [l, r] 等价于 lil \le ii+1ri+1 \le r,即 i[l,r1]i \in [l, r-1]
      同时要求 i2i \ge 2,所以 ii 的取值范围是 [max(l,2), r1][\max(l, 2),\ r-1]
      max(l,2)r1\max(l, 2) \le r-1,则个数为 (r1)max(l,2)+1(r-1) - \max(l, 2) + 1;否则为 00

    • [1,1][1, 1] 被包含当且仅当 l1rl \le 1 \le r,即 l=1l = 1

    分类讨论

    • l=r=1l = r = 1:此时只有 [1,1][1,1],答案为 11
    • l=1l = 1r>1r > 1
      [1,1][1,1] 贡献 11
      ii 的范围为 [2,r1][2, r-1],个数为 (r1)2+1=r2(r-1)-2+1 = r-2
      总数为 (r2)+1=r1(r-2)+1 = r-1。而 rl=r1r-l = r-1,所以答案为 rlr-l
    • l2l \ge 2
      [1,1][1,1] 不存在;
      ii 的范围为 [l,r1][l, r-1],个数为 (r1)l+1=rl(r-1)-l+1 = r-l
      所以答案为 rlr-l

    综上,除了 l=r=1l = r = 1 时答案为 11,其余情况答案均为 rlr-l

    由于 l=r=1l = r = 1rl=0r-l = 0,而正确答案是 11,因此只需要特判这一种情况。

    时间复杂度

    每个测试用例 O(1)O(1),总复杂度 O(t)O(t),可以轻松通过。

    代码实现(C++)

    #include <iostream>
    using namespace std;
    
    int main() {
        int t;
        cin >> t;
        while (t--) {
            int l, r;
            cin >> l >> r;
            if (l == 1 && r == 1) cout << "1\n";
            else cout << r - l << "\n";
        }
        return 0;
    }
    

    示例验证

    以题目样例为例:

    输入 (l,r)(l, r) 输出 计算
    1,21,2 11 rl=1r-l=1,正确
    1,101,10 99 101=910-1=9
    49,4949,49 00 4949=049-49=0(注意 49149\neq1
    69,42069,420 351351 42069=351420-69=351
    1,11,1 11 特判
    9982,443539982,44353 3437134371 443539982=3437144353-9982=34371

    与题目输出完全一致。

    • 1

    信息

    ID
    7282
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者