本文主要是介绍2019蓝桥杯C++B等差数列,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <iostream>
#include<vector>
#include <set>
using namespace std;
int N;
multiset<int>input;
set<int> d;
int zero=0;;
int gcd(int i,int j)
{
if(i>j)swap(i,j);
int temp=0;
while(i!=0)
{
temp=i;
i=j%i;
j=temp;
}
return temp;
}
int main()
{
cin>>N;
for(int i=0;i<N;i++)
{
int val=0;
cin>>val;
input.insert(val);
}
set<int>::iterator it;
it=input.begin();
int last=*it;
for(++it;it!=input.end();it++)
{
d.insert(*it-last);
if(*it-last==0){zero=1;break;}
last=*it;
}
if(zero==1){cout<<N;}//常数数列
else
{it=d.begin();
int GCD=*it;
for(++it;it!=d.end();it++)
{
GCD=gcd(GCD,*it);
}
int n=(*(--input.end())-*input.begin())/GCD+1;
cout<<n;
}
return 0;
}
这篇关于2019蓝桥杯C++B等差数列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!