蓝桥杯每日一题2023.10.20

题目描述

等差数列 - 蓝桥云课 (lanqiao.cn)

蓝桥杯每日一题2023.10.20_第1张图片

知识点:

排序找出最大公约数则为公差

项数: n = (第n项值-首项) / 公差 +1。 n = (an-a1) / d+1
#include
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
int a[N], n;
int gcd(int a, int b)
{
	return a ? gcd(b % a, a) : b;
}
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i ++)
	{
		cin >> a[i];
	}
	sort(a + 1, a + 1 + n);
	int d = 0;
	for(int i = 2; i <= n; i ++)
	{
		d = gcd(d, a[i] - a[i - 1]);	
	}	
	if(d == 0)cout << n;
	else cout << (a[n] - a[1]) / d + 1;
	return 0;
}

你可能感兴趣的:(蓝桥杯,职场和发展)