理解
如何求最大公差??
1:给数组排序
2:减去arr[1]
3:arr[2] 作为基础公差
4:从3开始依次更新最大公差
代码
#include <bits/stdc++.h>
using namespace std;
int num[10001];
int gcd(int a, int b){ //求公差的末班
return b==0 ? a : gcd(b,a%b);
}
int main()
{
int n;
cin>>n;
for(int i=1; i<=n; i++)
cin>>num[i];
sort(num+1, num+n+1); //没有使用num[0] , 排序就需要从num+1开始,num+n代表num[n-1]的内容
for(int i = 2; i<=n; i++)
num[i] -= num[1];
int d = num[2];
for(int i=3; i<=n; i++)
d = gcd(d,num[i]);
if(d==0)
cout<<n<<endl; //****陷阱***注意常数列的话,返回数列长度;
else
cout<<(num[n]/d)+1<<endl; //这里num[n] 应该理解成 数列的尾项 — 数列首项(因为前面已经集体减去了arr[1]) 然后不要忘了加上“相遇”加一
return 0;
}