题目题意

在[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();
    }
}