fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define fi first
  5. #define se second
  6.  
  7. int main(void){
  8. ios_base::sync_with_stdio(false);
  9. cin.tie(NULL);
  10. ll n;
  11. cin>>n;
  12. vector<ll> arr(n);
  13. ll gcd=0;
  14. int flag=0,c=0;
  15. for(int i=0;i<n;i++) {
  16. cin>>arr[i];
  17. gcd=__gcd(gcd,arr[i]);
  18. if(arr[i]==1 ) {
  19. flag=1;
  20. c++;
  21. }
  22. }
  23. if(flag==1) cout<<n-c;
  24. else if(gcd>1) cout<<"-1";
  25. else{
  26. ll mincnt1=INT_MAX,mincnt2=INT_MAX;
  27. for(int i=0;i<n;i++){
  28. ll gcd1=arr[i],gcd2=arr[i],cnt1=0,cnt2=0;
  29. for(int j=i+1;j<n;j++){
  30. gcd1=__gcd(gcd1,arr[j]);
  31. cnt1++;
  32. if(gcd1==1) break;
  33. }
  34. if(cnt1>0 && gcd1==1)
  35. mincnt1=min(mincnt1,cnt1);
  36. for(int j=i-1;j>=0;j--){
  37. gcd2=__gcd(gcd2,arr[j]);
  38. cnt2++;
  39. if(gcd2==1) break;
  40. }
  41. if(cnt2>0 && gcd2==1)
  42. mincnt2=min(mincnt2,cnt2);
  43. //out<<cnt1<<" "<<cnt2<<endl;
  44. }
  45. cout<<n-1+min(mincnt1,mincnt2);
  46. }
  47. return 0;
  48. }
Success #stdin #stdout 0s 4552KB
stdin
3
2 6 9
stdout
4