1 条题解

  • 1
    @ 2025-4-24 9:34:37
    #include <bits/stdc++.h>
    using namespace std;
    #define ls u << 1
    #define rs u << 1 | 1
    #define LL long long
    #define int long long
    #define PII pair <int, int>
    #define fi first
    #define se second
    #define pub push_back
    #define pob pop_back
    #define puf push_front
    #define pof pop_front
    #define lb lower_bound
    #define ub upper_bound
    #define i128 __int128
    #define pcnt(x) __builtin_popcount(x)
    #define mem(a,goal) memset(a, (goal), sizeof(a))
    #define rep(x,start,end) for(int x = (start) - ((start) > (end)); x != (end) - ((start) > (end)); ((start) < (end) ? x ++ : x --))
    #define aLL(x) (x).begin(), (x).end()
    #define sz(x) (int)(x).size()
    const int INF = 998244353;
    const int mod = 1e9 + 7;
    const int N = 100010;
    int st[N], primes[N];
    int cnt;
    void get()
    {
        for(int i = 2; i < 40001; ++ i)
        {
            if(!st[i]) primes[cnt ++] = i;
            for(int j = 0; i * primes[j] < 40001; ++ j)
            {
                st[i * primes[j]] = 1;
                if(i % primes[j] == 0) break;
            }
        }
    }
    void solve()
    {
        get();//2262
        int n, m, res = 0;
        cin >> n >> m;
        vector<int> a(n, 0), b(m, 0);
        for(int i = 0; i < n; ++ i) cin >> a[i];
        for(int i = 0; i < m; ++ i) cin >> b[i];
        sort(a.begin(), a.end());
        sort(b.begin(), b.end());
        for(int i = 0; i < cnt; ++ i)
        {
            int t = primes[i];
            if(t > n + m) break;
            int l = 0, r = m - 1;
            while(l < n && r >= 0)
            {
                if(a[l] + b[r] > t)
                {
                    -- r;
                    continue;
                }
                if(a[l] + b[r] < t)
                {
                    ++ l;
                    continue;
                }
                if(a[l] + b[r] == t)
                {
                    ++ res;
                    break;
                }
            }
        }
        cout << res << '\n';
    }
    
    signed main()
    {
        int t = 1;
        while (t --) solve();
        return 0;
    }
    
    • 1

    信息

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