第十届蓝桥杯 等差数列 C语言

[问题描述]

  数学老师给小明出了- -道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中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;
}
发布了34 篇原创文章 · 获赞 6 · 访问量 1129

猜你喜欢

转载自blog.csdn.net/qq_46232829/article/details/104598351