AcWing 1246. 等差数列
原题链接
中等
作者:
fwy68668
,
2024-04-10 19:01:52
,
所有人可见
,
阅读 1
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 100010;
int a[N];
//求最大公约数
int gcd(int a, int b){
//return b ? gcd(b, a % b) : a;
if(b==0) return a;
else return gcd(b,a%b);
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
//求后面各项与第一项所有差值的最大公约数
int d = 0;
for(int i = 1; i < n; i ++) d = gcd(d, a[i] - a[0]);
if(!d) printf("%d\n", n);
else printf("%d\n", (a[n - 1] - a[0]) / d + 1);
return 0;
}