社区讨论
nsdd,但我是dp(double player)
P4752Divided Prime参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mjzrzxmt
- 此快照首次捕获于
- 2026/01/04 21:36 2 个月前
- 此快照最后确认于
- 2026/01/04 21:39 2 个月前
数据太水了还是怎么说
CPP#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
const int maxv=1e6+5;
long long a[maxn],b[maxn];
bitset<maxv> ok;
vector<int> prime;
int main(){
for(int i=2;i<maxv;i++){
if(!ok[i])prime.emplace_back(i);
for(int j:prime){
if(j*i>=maxv)break;
ok[j*i]=1;
if(i%j==0)break;
}
}
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int T;
cin>>T;
while(T--){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>b[i];
sort(a+1,a+n+1,greater<int>());
sort(b+1,b+m+1,greater<int>());
int i=1,j=1;
long double tot=1;
while(i<=n&&j<=m){
tot*=a[i];
i++;
while(tot>=b[j]&&j<=m)tot/=b[j],j++;
}
while(j<=m)tot/=b[j],j++;
while(i<=n)tot*=a[i],i++;
long long xx=tot+0.5;
if(xx<=1||xx>=1e12){
cout<<"NO\n";
continue;
}
bool ok=0;
for(int p:prime){
if(p*p>xx)break;
if(xx%p==0){
cout<<"NO\n";
ok=1;
break;
}
}
if(!ok){
cout<<"YES\n";
}
}
return 0;
}
我要写题解!!111
回复
共 0 条回复,欢迎继续交流。
正在加载回复...