先看题目描述:
这个又是一个简单的题目。
先用sort 排序
先把等差看做a[1] - a[0] ,然后遍历一下,看能否达到每个数,不可以就把这个等差数减1。
上代码:
#include<iostream>
#include<algorithm>
using namespace std;
int bianli(int a[],int x,int N) //遍历
{
int flag = 1;
for(int i = 1; i < N; i++)
{
if((a[i]-a[i-1]) % x != 0)
{
flag = 0;
break;
}
}
return flag;
}
int main()
{
int N;
cin >> N ;
int a[N];
for(int i = 0; i < N; i++)
{
cin >> a[i];
}
sort(a,a+N); //排序
int cha = 0;
int dengcha = a[1] - a[0];
while(1)
{
if(bianli(a,dengcha,N) == 1)
{
cha = dengcha;
break;
}
dengcha -= 1;
}
if(a[N-1]-a[0] == 0)
{
cout << N << endl;
}
else
{
cout << (a[N-1]-a[0]) / cha +1 << endl;
}
}
本解法只有90分,欢迎来找问题。