3 条题解

  • 0
    @ 2024-10-19 15:37:02
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=1e6+10;
    int t,a[N],b[N];
    int main(){
    //freopen("interval.in","r",stdin);
    //freopen("interval.out","w",stdout);
    cin>>t;
    while(t--){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<n;i++) b[i]=a[i+1]-a[i];
    int v=b[1];
    for(int i=2;i<n;i++){
    if(b[i]==0){
    v=0;
    break;
    }
    v=__gcd(v,b[i]);
    }
    int flog=1;
    for(int i=2;i<=n;i++){
    if(a[1]!=a[i]){
    flog=0;
    break;
    }
    }
    if(v==0 && !flog){
    cout<<"-1"<<endl;
    continue;
    }
    if(flog){
    cout<<0<<endl;
    continue;
    }
    int ans=0;
    for(int i=1;i<n;i++){
    ans+=(b[i]-v)/v;
    }
    cout<<ans<<endl;
    }
    return 0;
    }
    

    信息

    ID
    2867
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    129
    已通过
    25
    上传者