Problem
Process
在输入的时候先去重,然后进行排序,至于他们的公差p则需要计算每两个相邻数值之间差值的最大公因数
Code
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n, a[100010], cnt;
set<int> s;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
int temp;
cin >> temp;
if (s.count(temp) == 0)
{
s.insert(temp);
a[cnt++] = temp;
}
}
sort(a, a + cnt);
int p=a[1]-a[0], q;
for (int i = 2; i < cnt; i++) {
q = a[i] - a[i - 1];
p = gcd(p, q);
}
int result = (a[cnt - 1] - a[0]) / p + 1;
cout << result;
return 0;
}