根据相邻数之差计算gcd,样例没啥毛病,但WA了
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+100;
int n;
int a[N];
int ans=1;
int gcd(int a,int b){
if(a%b==0)return b;
else return gcd(b,a%b);
}
int b[N];
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int num=1;
for(int i=1;i<=n;i++){
int cnt=abs(a[i]-a[i-1]);
if(num!=1&&gcd(cnt,num)==1){
ans++;
num=1;
}
else num=cnt;
}
cout<<ans;
return 0;
}