2019年蓝桥杯H题---等差数列

在这里插入图片描述
code:

#include<stdio.h>
#include<algorithm>
#include<set>

using namespace std;

set<int> e;//集合e存储输入数组间的gap
int LGD(){
    
    //求该集合所有数的最大公约数
	set<int>::iterator it=e.begin();
	int num=*it;
	
	for(;num>=1;num--){
    
    
		int flag=1;
		for(set<int>::iterator it=e.begin();it!=e.end();it++){
    
    //迭代器遍历
			if(*it%num!=0){
    
    
				flag=0;
				break;
			}
		}
		if(flag==1)return num;
		else continue;
	}
	return 1;//最少为1,     1是所有正整数的约数
}

int main(){
    
    
	
	int n;
	scanf("%d",&n);
	int a[n];
	for(int i=0;i<n;i++){
    
    
		scanf("%d",&a[i]);
	}
	sort(a,a+n);//对a排序 
	
	for(int i=0;i<n-1;i++){
    
    
		e.insert(a[i+1]-a[i]);
	}
	
	int len=LGD();
	int all=(a[n-1]-a[0])/len+1;
	printf("%d",all);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/timelessx_x/article/details/115027271