AcWing 1246. 等差数列
原题链接
中等
作者:
冉俊泽
,
2021-02-05 22:23:18
,
所有人可见
,
阅读 279
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N = 100010;
int a[N];
int gcd(int a, int b)
{
if (b == 0) return a;
return gcd(b, a % b);
}
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++) scanf("%d", &a[i]);
sort(a, a + n);
int d;
for (int i = 1; i < n; i++)
{
if (i == 1) d = a[i] - a[i - 1];
else d = gcd(d, a[i] - a[i - 1]);
if(a[i] == a[i - 1])
{
printf("%d", n);
return 0;
}
}
int ans = (a[n - 1] - a[0]) / d + 1;
printf("%d\n", ans);
return 0;
}