题目题意:
在[1,1e9]的范围内,随机独立均匀的生成若干数,是否能够找到两个数使之他们的最大公约数要 >1
题目分析:
如果有两个数,根据题目中均匀独立随机生成可知,他们不都为偶数的概率为0.75,那么如果有100对数据,他们不都为偶数的概率就为(0.75)^100,约为3.2e-13,如果有1000对,那么他们不都为偶数的概率将为1.1e-125,几乎为0,那么我们可以直接枚举前1000对,或者直接暴力枚举,代码如下:
#include<bits/stdc++.h>
using namespace std;
int a[200010];
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<n;i++){
for(int j=i+1;j<=n;j++){
if(gcd(a[i],a[j])>1){
cout<<a[i]<<" "<<a[j]<<endl;
return;
}
}
}
cout<<"-1"<<endl;
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}

京公网安备 11010502036488号