标签:十一届 const int void maxv 蓝桥 num 等差数列 cmp
题目比较简单,但是考察一些数学知识。
#include<bits/stdc++.h> #include<string.h> using namespace std; int num[100005]={0}; int cmp(const void* a,const void* b){ return *(int*)a-*(int*)b; } int main(){ ios::sync_with_stdio(false), cin.tie(0); int n; cin>>n; for(int i=0;i<n;i++){ cin>>num[i]; } qsort(num,n,sizeof(int),cmp); int minv=num[0],maxv=num[n-1],mind=maxv; for(int i=1;i<n;i++){ mind=min(mind,num[i]-num[i-1]); } if(mind==0) cout<<n; else cout<<(maxv-minv)/mind + 1; return 0; }
思路:排个序,算出最大最小值,然后再得到排序数组的最小邻差(即最小公差)
如果最小公差为0,即为常数列,那值便就是n,如果不为一,那就有等差数列求项数和(max-min)/d + 1
这里写了一个stdlib库中的快排算法,还有cmp比较函数的定义,以后会经常用到,不妨记一下或再看一下。
标签:十一届,const,int,void,maxv,蓝桥,num,等差数列,cmp 来源: https://www.cnblogs.com/MagicHaze/p/16084742.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。