牛客挑战赛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;
}

浙公网安备 33010602011771号