2019蓝桥杯C++B等差数列

2021/4/17 12:55:23

本文主要是介绍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等差数列的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程