90 pts 求助悬关
查看原帖
90 pts 求助悬关
620253
MvemiY楼主2024/7/20 16:56

码风相对良好,一直 WA 16~20,求助 QWQ。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 1e5 + 10;
ll read(){
	ll x = 0, f = 1; char c = getchar();
	while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
	while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
	return x * f;
}

ll n, m, a[MAXN], b[MAXN];
map <ll, int> c;
map <ll, bool> az;

bool is_prime(ll x){
	for(ll i = 2; i*i <= x; i++)
		if(x % i == 0) 
			return false;
	return true;
}

int main(){
	int t = read();
	while(t--){
		c.clear();
		az.clear();
		n = read(), m = read();
		for(int i = 1; i <= n; i++){
			if(a[i] == 1) continue;
			a[i] = read(), c[a[i]]++;
		}
		for(int i = 1; i <= m; i++){
			if(b[i] == 1) continue;
			b[i] = read(), c[b[i]]--;
		}
		ll x = -1;
		bool flag = true;
		for(int i = 1; i <= n; i++){
			if(a[i] == 1) continue;
			if(az[a[i]]) continue;
			if(c[a[i]] != 0){
				if(x != -1 || c[a[i]] > 1){
					flag = false;
					break;
				}
				az[a[i]] = true;
				x = a[i];
			}
		}
		if(x == -1){
			cout << "NO\n";
			continue;
		}
		if(flag){
			flag = is_prime(x);
		}
		if(flag)
			cout << "YES\n";
		else cout << "NO\n";
	}
	
	
	return 0;
}
2024/7/20 16:56
加载中...