公因子(gcd性質)
思路:
性質:
推廣:
所以此題的的不能改變了,所以此題的
同時又要使滿足有因子,所以
這樣就能取最小的。
另外此題有個坑,差分數組可能有負數,會發生除0錯誤的情況,取一下絕對值即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+5,M=1e6+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a) memset(a,0,sizeof a)
#define lx x<<1
#define rx x<<1|1
#define reg register
#define PII pair<int,int>
#define fi first
#define se second
ll a[N];
ll gcd(ll a,ll b){
return b==0?a:gcd(b,a%b);
}
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
for(int i=n;i>1;i--) a[i]=abs(a[i]-a[i-1]);
ll ans=0;
for(int i=2;i<=n;i++) ans=gcd(ans,a[i]);
printf("%lld %lld\n",ans,(ans-a[1]%ans)%ans);
return 0;
}