题目链接:传送门(点我)
分析:a[n] = a[0] + (n-1)d
要想距离最短,则求出最大的公差d即可。
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100010
int n,d;
int a[MAXN];
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
sort(a+1,a+1+n);
for(int i=2;i<=n;i++)d=gcd(d,a[i]-a[1]);
if(!d)return cout<<n<<endl,0;
return cout<<(a[n]-a[1])/d+1<<endl,0;
}