1 条题解

  • 0
    @ 2025-12-7 17:38:51

    时间复杂度: O((LR)R) O((L−R)R​)

    空间复杂度: O(1)O(1)

    观察数据范围,用素数筛有超时和超内存的风险。数据范围中提到 RL1000 R−L≤1000 ,因此可以用普通的试除法判断素数,时间复杂度为 O((LR)R) O((L−R)R) ,能拿 60  60 分。

    试除法+根号优化,拿 100 100 分。

    #include <bits/stdc++.h>
    using namespace std;
    
    long long l, r, ans;
    
    bool prime(int x) {
        if(x <= 2) return false;
        for(int i = 2; i * i <= x; i++) {
            if(x%i==0) return false;
        }
        return true;
    }
    
    int main(){
        freopen("sum.in", "r", stdin);
        freopen("sum.out", "w", stdout);
        cin >> l >> r;
        for(int i = l; i <= r; i++) {
            if(prime(i)) ans += i;
        }
        cout << ans;
        return 0;
    }
    

    信息

    ID
    9003
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者