[问题描述]
数学老师给小明出了- -道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N个整数。
现在给出这N个整数,小明想知道包含这N个整数的最短的等差数列有几项?
[输入格式]
输入的第一行包含一-个整数N。
第二行包含N个整数A.A2... ,AN. (注意A1 ~An并不一-定是按等差数列中的顺序给出)
[输出格式]
输出一个整数表示答案。
[样例输入]
5
2 6 4 10 20
[样例输出]
10
[样例说明]
包含2、6、4、10、20的最短的等差数列是2、4、6、 8、10、12、14. 16、18、20。
#include<stdio.h>
int main()
{
int n,i,j;
scanf("%d",&n);
int a[n],d,s=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int min=1000,t,count=1;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j]) //从小到大排序
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
d=a[j]-a[i]; //求出最近两个数的公差
if(min>d)
{
min=d; //最小的公差
}
}
s=a[n-1]-a[0]; //最小数与最大数之间的差
count=s*1.0/min+1; //求出多少个d 然后加其本身
printf("%d\n",count);
return 0;
}