社区讨论

只有Subtask#1新增的测试点错了,已特判0,已写注释,谢谢大佬!

P8682[蓝桥杯 2019 省 B] 等差数列参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m10pavb6
此快照首次捕获于
2024/09/13 20:34
去年
此快照最后确认于
2025/11/04 21:17
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int>s;
long long sum = 0;
signed main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int n;cin >> n;
	int MIN = INT_MAX;
	for (int i = 0; i < n; i++)
	{
		int k; cin >> k;
		s.push_back(k);
	}
	sort(s.begin(), s.end());//排序

	int MAX = *(s.end() - 1);//序列中最大的数
	for (int i = 0; i < n - 1; i++)
		MIN = min(MIN, s[i + 1] - s[i]);//找出序列中最小的公差

	if (MIN == 0)//特判0
	{
		cout << n;return 0;
	}
	int shuzi = *s.begin();//序列中最小的数字
	while (1)
	{
		shuzi += MIN;//从最小的数字开始,持续加上公差
		sum++;//记录有多少元素
		if (shuzi > MAX)//当大于最大数的时候,跳出循环
			break;
	}
	cout << sum;
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...