1246. 等差数列
a[i] = a[1] + (i - 1) * d
所以和a[1] 与 d有关系。
最大公差就是 所有a[i] - a[1] 的最大公约数
d = gcd(d, a[i] - a[1])
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+ 10;
int a[N];
int n;
int gcd(int a,int b)
{
while(b)
{
int c = a;
a = b;
b = c % a;
}
return a;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int d =0;
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
d =gcd(d,a[i] - a[1]);
}
if(d == 0) printf("%d",n);
else printf("%d",(a[n] - a[1]) / d + 1 );
}
难了不会,会了不难。