第十届蓝桥B组:等差数列
思路: 排个序,做差,求最大公因子
#include<bits/stdc++.h>
#define maxn 200005
#define INF 0x3f3f3f3f
#define mst(a) memset(a,0,sizeof a)
#define ll long long
using namespace std;
//题号:等差数列
int A[100002];
int main()
{
ios::sync_with_stdio(false);
int n;
cin >> n;
for(int i = 1; i<=n; i++)
{
cin >> A[i];
}
sort(A+1,A+1+n);
int mind = __gcd(A[1],A[2]) ;
if(A[1] == A[2]) mind = 0;
for(int i = 3; i<n; i++)
{
mind = min(mind,__gcd(mind,A[i]) );
}
if(mind==0)printf("%d\n",n);
else
{
printf("%d\n",(A[n]-A[1])/mind +1 );
}
return 0;
}