由题意可知,两个数可以乘以任意的k然后使gcd为1,我们可以从中知道,如果两个数都大于1,那么不乘k才是最优解,因此我们可以直接用gcd来判断,而如果其中一个数为1,因为可以乘以任意数k,因此我们可以乘以一个质数,但这个质数不能被另一个数所整除,因此看见1可以直接认为gcd一定为1,那么这题就很简单了,我们暴力一遍就行了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100005];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
int x=__gcd(a[i],a[i-1]);
if(x!=1&&a[i]!=1&&a[i-1]!=1)
{
cout<<-1<<endl;
return 0;
}
}
cout<<0;
}