3 条题解
-
0
血与泪。
//t4 interval rp++ #include<bits/stdc++.h> //#define Freopen using namespace std; const int N=1e6+10; int ans,n,t,a[N]; int gcd,s[N]; int GCD(int x,int y) { if(y!=0&&x%y==0)return y; return GCD(y,x%y); } int main() { #ifdef Freopen freopen("interval.in","r",stdin); freopen("interval.out","w",stdout); #endif scanf("%d",&t); while(t--) { memset(s,0,sizeof(s)); bool fg=0,flg=1; ans=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a[i]); s[i]=a[i]-a[i-1]; if(s[i]==0&&i>1)fg=1;//wa1 } for(int i=3;i<=n;++i)//wa2 { if(s[i]!=s[2]) { flg=0; } } if(flg||n<=2)//wa3 { printf("0\n"); continue; } else if(fg) { printf("-1\n"); continue; } gcd=s[2];//wa4 for(int i=3;i<=n;++i) { gcd=GCD(gcd,s[i]); } for(int i=2;i<=n;++i) { ans+=max(0,(s[i])/gcd-1); } printf("%d\n",ans); end:; } return 0; }
信息
- ID
- 2867
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 129
- 已通过
- 25
- 上传者