P8682 [蓝桥杯 2019 省 B] 等差数列--sort()
P8682 [蓝桥杯 2019 省 B] 等差数列
- 题目
- 解析
- 代码
题目
解析
没什么做的,已知是乱序的等差数列,哪就先排序利用sort函数
,再找出公差就行,然后用最后一项带公式求出N的值
介绍一下sort()函数(默认升序,左闭右开
)【降序没必要记,反着遍历就行】
1)常用于vector数组中:sort(vec.begin(), vec.end());
2)在常规数组中:sort(a, a + n) 是什么意思?
第一个参数 a:
代表数组的起点位置(从第 1 个元素开始排序)。
第二个参数 a + n:
代表数组的终点位置(排序到第 n 个元素之前结束)。
代码
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <math.h>
#include <queue>
#include <cctype>
using namespace std;
int n;
int a[100010];
int main() {
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n);
if (n <= 1) {
cout << n;
return 0;
}
int mi = a[1] - a[0];
for (int i = 2; i < n; i++) {
mi = min(mi, a[i] - a[i - 1]);
}
if (mi == 0)
cout << n;
else
cout << (a[n - 1] - a[0]) / mi + 1;
return 0;
}