牛客挑战赛47

牛客挑战赛47

A

**多维的更相减损术得gcd(x,y,z) = gcd(x,y-x,z-y) **

gcd(a1+k,a2+k,a3+k…,an+k) = gcd(a1+k,a2-a1,a3-a2,a4-a3…,an-an-1)

提前排好序

#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e5+10;
long long a[maxn],n;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+n+1);
	long long g=0;
	for(int i=2;i<=n;i++) g= __gcd(g,a[i]-a[i-1]);
	cout<<g<<" "<<(g-a[1]%g)%g<<endl;
	return 0;
}

posted @ 2022-05-11 21:01  爱xiaoyi  阅读(26)  评论(0)    收藏  举报