这个题说实话并不难,但是写的时候一个细节妹想到导致了运行错误,哎,还是得多修炼啊。
输入输出样例
输入
5
2 6 4 10 20
输出
10
样例说明: 包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。
运行限制
最大运行时间:1s
最大运行内存: 256M
这里主要就是注意公差为0的情况就可以了
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int que[N];
bool cmp(int a,int b){
return a<b;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&que[i]);
}
sort(que,que+n,cmp);
int imin_que=1000000005;
for(int i=1;i<n;i++){
imin_que=min(imin_que,que[i]-que[i-1]);
}
if(imin_que==0) {
cout<<n<<endl;
return 0;
}
int imax=que[n-1];
int imin=que[0];
printf("%d\n",(imax-imin)/imin_que+1);
return 0;
}