题解:P12157 [蓝桥杯 2025 省 Java B] 魔法科考试
传送门
时限很大,所以埃氏筛+桶就能过这题。
也就是,先把素数筛出来,再枚举一遍,看一看是否符合题目要求:质数,和小于
#include<bits/stdc++.h>
using namespace std;
int p[41000],a[40010],b[40010],t[40010];
void shai(){//埃氏筛
p[0] = p[1] = 1;
for(int i = 2;i*i<=40000;i++)if(!p[i])for(int j = 2;i*j<=40000;j++)p[i*j] = 1;
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cout.tie(0);
shai();
int n,m,cnt = 0;
cin>>n>>m;
for(int i = 1;i<=n;i++)cin>>a[i];
for(int i = 1;i<=m;i++)cin>>b[i];
for(int i = 1;i<=n;i++)for(int j = 1;j<=m;j++)if(a[i]+b[j]<=n+m&&!p[a[i]+b[j]]&&!t[a[i]+b[j]])cnt++,t[a[i]+b[j]] = 1;//爆搜
cout<<cnt;
return 0;
}
时限三秒是种什么感受?测试点跑出